[프로그래머스] 폰켓몬 풀이 (찾아라 프로그래밍 마에스터)


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


이 문제는 폰켓몬의 종류가 어떤 게 있는지 카운팅 하면 된다.


문제 풀이

  1. 폰켓몬 종류 번호의 개수를 저장하는 num 배열을 만든다.
  2. nums 벡터를 순차 탐색하여 num 배열에 폰켓몬 종류의 개수를 카운팅 한다.
  3. num 배열의 값이 0이 아니면 해당 번호의 폰켓몬이 존재한다는 의미이다.
    • 해당 번호의 폰켓몬이 존재하면 폰켓몬 종류(check)를 카운팅 한다.
  4. 2/N 마리의 폰켓몬을 선택해야 한다.
    • 총 폰켓몬 종류(check)가 2/N 보다 많으면 2/N를 return 한다.
    • 총 폰켓몬 종류(check)가 2/N 보다 적으면 check를 return 한다.

정답 코드

#include <vector>
using namespace std;

int solution(vector<int> nums){
    int N = nums.size();
    int num[200001] = {0,};
    int check = 0;

    for(int i = 0;i < nums.size();i++) num[nums[i]]++;

    for(int i = 1;i < 200001;i++){
        if(num[i] != 0)
            check++;
    }
    
    int answer = 0;

    if(check >= N/2)
        answer = N/2;
    else
        answer = check;
    
    return answer;
}

감사합니다.


홈으로 가기 더 많은 programmers post 보기 post 목록 보기