https://programmers.co.kr/learn/courses/30/lessons/1845
#include <vector>
#include <unordered_set>
#include <algorithm>
using namespace std;
int solution(vector<int> nums)
{
// nums -> set으로 변환
unordered_set<int> set(nums.begin(), nums.end());
// 폰켓몬의 종류 수와 N / 2 중 더 작은 값을 반환
return min(set.size(), nums.size() / 2);
}
처음에 장황하게 짜서 통과시키고 난 후,
2줄짜리 코드를 보고 스턴을 먹고 말았다 ㅜㅜ
TIP
이 문제는 결국 가짓수만 고려하면 된다.
1. {1, 1, 1, 1, 1, 1}
2. {1, 2, 3, 4, 5, 6}
두 가지 테스트 케이스를 보면 min(폰켓몬의 종류수, 총 폰켓몬 갯수 / 2) 임을 알 수 있다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스]연습문제 : 행렬의 곱셈(level 2)(c++) (0) | 2020.05.20 |
---|---|
[프로그래머스]연습문제 : 숫자의 표현(level 2)(c++) (0) | 2020.05.20 |
[프로그래머스]연습문제 : JadenCase 문자열 만들기(level 2)(c++) (0) | 2020.05.20 |
[프로그래머스]2017 팁스타운 : 짝지어 제거하기(level 2)(c++) (0) | 2020.05.20 |
[프로그래머스]연습문제 : 땅따먹기(level 2)(c++) (0) | 2020.05.20 |
댓글