자료구조, 알고리즘 문제 풀이/프로그래머스 문제 풀이
[프로그래머스] 폰켓몬
재우이
2022. 3. 14. 16:49
https://programmers.co.kr/learn/courses/30/lessons/1845
코딩테스트 연습 - 폰켓몬
당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.
programmers.co.kr
문제 접근 풀이
1. 폰켓몬 종류의 최대값을 return하면 되니까 같은 값의 경우 무시하고 다른 값들에 대해서 접근한다
2. 정렬을 해놓은 상태로 접근하면 한번의 for문으로 중복된 값을 신경쓰지 않고 처리할 수 있다고 생각했다
3. 정렬을 하고 같은 값인 경우 넘어가고 아닌 경우의 값을 저장하여 비교한다 answer의 값은 1 증가시켜준다
이상태로 제출하니 맞고 틀리고 하는 상황이 발생했는데
폰켓몬을 선택할 수 있는 것은 총 수의 n/2 이므로 마지막에 조건을 추가해주어 정답에 도출하게 되었다
총코드
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> nums)
{
int answer = 1;
sort(nums.begin(),nums.end());
int tempNum = nums[0];
for(auto i : nums)
{
if(tempNum == i)
continue;
else
{
tempNum = i;
answer++;
}
}
if(answer > nums.size()/2)
return nums.size()/2;
return answer;
}