728x90
내 풀이 )
set을 쓰긴 했는데 set 사용법과 algorithm 헤더에 min까지 들어있는지 잘 몰라서 코드가 길어졌다.
#include <vector>
#include <set>
#include <iostream>
using namespace std;
int solution(vector<int> nums)
{
int answer = 0;
int nums_length = nums.size();
set<int> kind;
for (int i = 0; i < nums_length; i++) {
kind.insert(nums[i]);
}
answer = nums_length/2 > kind.size() ? kind.size() : nums_length/2;
return answer;
}
다른 사람 풀이 참고)
1. set 선언할 때 vector의 반복자 멤버함수인 begin, end를 이용해 복사 및 중복 제거가 가능했다.
2. algorithm 헤더에 min 함수가 있어 작은 것을 선택할 수 있다.
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
int solution(vector<int> nums)
{
set<int> s(nums.begin(), nums.end());
return min(nums.size() / 2, s.size());
}
'[C_C++]코딩테스트 연습 > [프로그래머스] level 1' 카테고리의 다른 글
[C++] 프로그래머스 - 2016년 (0) | 2021.07.02 |
---|---|
[C++] 프로그래머스 - 모의고사 (0) | 2021.07.02 |
[C++] 프로그래머스 - 키패드 누르기 (배열 노가다 + 지향할 풀이) (0) | 2021.06.25 |
[C++] 프로그래머스 - 징검다리 건너기 (0) | 2021.06.24 |
[C++] 프로그래머스 - 두 개 뽑아서 더하기 (벡터, sort, find) (0) | 2021.06.24 |