반응형
2022.07.29 - [Coding Test/Python] - [프로그래머스] 폰켓몬 Python 3 Code
이번엔 C++로 풀이해보겠다.
문제
C++ Unique
우선 구현하는데 Python의 set과 비슷한 Unique함수의 사용법이 헷갈려서 찾아보았다.
https://cplusplus.com/reference/algorithm/unique/
위 링크에서 참고하면 된다.
c++의 unique는 python의 set과는 달리 그룹으로 묶어서 지워주는 기능이다.
예를 들어 [1,1,2,2,3,3,2,2,1,1] 이렇게 있다면
[1,2,3]이 되는 것이 아니라
[1,2,3,2,1,?,?,?,?,?] 이렇게 된다고 한다.
뒤의 값은 어떻게 출력될지는 모른다.
이후 리턴값은 저 뒤의 ?값이 시작되는 부분을 가리킨다.
여기서 [1,2,3,2,1]만 남기고 싶기에 resize로 크기를 변경해야 한다.
이때 위 링크에서는 distance를 사용했다.
distance는 시작과 끝부분을 받아서 그 hop 수를 반환하는 함수이다.
그래서 set과 같은 동작을 시키기 위해 sort를 한 후
begin과 unique의 반환값을 distance에 넣어 size를 받아 resizing을 했다.
Code
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> nums)
{
int answer = 0;
answer = nums.size()/2;
sort(nums.begin(), nums.end());
nums.resize(distance(nums.begin(), unique(nums.begin(), nums.end())));
#python의 set과 같은 기능
if( answer > nums.size() )
return nums.size();
return answer;
}
이후 C++의 STL에도 있다는 말을 듣고 다시 풀어봤다.
#include <vector>
#include <set>
using namespace std;
int solution(vector<int> nums)
{
set<int> numset(nums.begin(), nums.end());
if(numset.size() > (nums.size()/2))
return nums.size()/2;
return numset.size();
}
이 문제는 Go언어가 제출이 되지 않아서 JS로 풀어보겠다.
반응형
'Coding Test > C++' 카테고리의 다른 글
[프로그래머스] 없는 숫자 더하기 C++ Code (0) | 2022.08.08 |
---|---|
[프로그래머스] 소수 만들기 C++ Code (0) | 2022.08.04 |
[프로그래머스] 내적 C++ Code (0) | 2022.07.29 |
[프로그래머스] 음양 더하기 C++ code (0) | 2022.07.29 |
[프로그래머스] 신고 결과 받기 C++ Code (0) | 2022.07.16 |
댓글