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

문제-폰켓몬

🤔문제 해석

총 폰켓몬 수 N 중에서 N/2만큼 데려갈 수 있다.
그 때 최대한 많은 종류의 폰켓몬을 데려갈 수 있는 종류 수를 return하라.

❗ 제한 조건

-nums는 폰켓몬의 종류 번호가 담긴 1차원 배열
-nums의 길이(N)는 1 이상 10,000 이하의 자연수이며, 항상 짝수
-폰켓몬의 종류 번호는 1 이상 200,000 이하의 자연수
-가장 많은 종류의 폰켓몬을 선택하는 방법이 여러 가지인 경우에도, 선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 return

😏풀이

sort() 함수를 사용하여 num을 정렬한다. (=>algorithm include 필요)

int값들로 이루어진 vector를 정렬했기 때문에 vector의 길이만큼 반복문을 돌며 다음 값이 앞의 값보다 크면 다른 경우이므로 cnt++

구해진 cnt값이 N/2보다 크면 N/2를 return
아닌 경우에는 cnt를 return한다.

💻코드

#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<int> nums)
{
    int cnt = 1;
    int pick = nums.size() / 2;
    int answer = 0;
    sort(nums.begin(), nums.end());
    for(int i= 0; i < nums.size() - 1; i++){
        if(nums[i] < nums[i + 1]) cnt++;
    }
    
    if(cnt > pick) answer = pick;
    else answer = cnt;
    
    return answer;
}

좋은 웹페이지 즐겨찾기