본문 바로가기
문제 풀이/프로그래머스 (Programmers)

[C++] 프로그래머스 : 폰켓몬

by 희조당 2021. 6. 24.
728x90

https://programmers.co.kr/learn/courses/30/lessons/1845

 

코딩테스트 연습 - 폰켓몬

당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.

programmers.co.kr


문제 풀이

 폰켓몬들의 개수만 따지면 되는 문제이다.

따라서, 중복되는 요소들을 제거하고 그 중에서 N/2개 만큼만 가져가면 된다.

N/2보다 중복요소가 제거된 배열의 사이즈가 작다면 배열의 사이즈가 정답이 되고, 아니라면 N/2가 정답이다. 

느낀 점

처음에 DPS로 풀으려고 했다가 코드가 너무 길어지는 것 같아서 의구심을 가지고 다른 분들의 코드를 살펴봤다. 그냥 단순하게 개수 자체만 따지면 되는 문제이다.

코드

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> nums) {
	int answer = 0;
	int n = nums.size() / 2;
	sort(nums.begin(), nums.end());
	nums.erase(unique(nums.begin(), nums.end()), nums.end());
	if (nums.size() > n) answer = n;
	else answer = nums.size();
	return answer;
}

댓글