본문 바로가기
Algorithm/프로그래머스

[프로그래머스] 찾아라 프로그래밍 마에스터 : 폰켓몬(level 2)(c++)

by HBGB 2020. 5. 20.

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

 

코딩테스트 연습 - 폰켓몬

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

programmers.co.kr

 

#include <vector>
#include <unordered_set>
#include <algorithm>

using namespace std;

int solution(vector<int> nums)
{
    // nums -> set으로 변환
    unordered_set<int> set(nums.begin(), nums.end());

    // 폰켓몬의 종류 수와 N / 2 중 더 작은 값을 반환
    return min(set.size(), nums.size() / 2);
}

 

처음에 장황하게 짜서 통과시키고 난 후,

2줄짜리 코드를 보고 스턴을 먹고 말았다 ㅜㅜ

 

TIP

이 문제는 결국 가짓수만 고려하면 된다.

1. {1, 1, 1, 1, 1, 1}

2. {1, 2, 3, 4, 5, 6}

두 가지 테스트 케이스를 보면 min(폰켓몬의 종류수, 총 폰켓몬 갯수 / 2) 임을 알 수 있다. 

댓글