반갑습니다!

[프로그래머스] 폰켓몬 본문

알고리즘 문제 풀이

[프로그래머스] 폰켓몬

김덜덜이 2020. 4. 9. 01:58
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

풀이

Set 자료구조를 사용하여 중복된 폰켓몬을 제거하였다. nums.size() / 2개 만큼의 폰켓몬을 선택하므로 중복된 폰켓몬이 많아서 정답이 nums.size() / 2가 될 수 없는 경우를 예외처리하여 해결하였다.

코드

C++

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

int solution(vector<int> nums)
{
    int answer = 0;
    set<int> s;
    for(int i : nums)
        s.insert(i);
    if(s.size() > nums.size() / 2) answer = nums.size() / 2;
    else answer = s.size();
    return answer;
}

Java

import java.util.HashSet;
import java.util.Set;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        Set<Integer> set = new HashSet<>();
        for (int v : nums) {
            set.add(v);
        }
        if (set.size() > nums.length / 2) answer = nums.length / 2;
        else answer = set.size();
        return answer;
    }
}