개발쿠키

[프로그래머스]포켓몬(java) 본문

개발/baekjoon&programmers

[프로그래머스]포켓몬(java)

쿠키와개발 2023. 6. 28. 12:18

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

 

프로그래머스

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

programmers.co.kr


문제를 요약하자면 N 마리의 포켓몬 중 N/2 마리만 가져갈 수 있다.

이때 가져갈 수 있는 포켓몬의 종류가 가장 많은 값 즉 종류가 가장 많은 케이스일 경우의 포켓몬 종류의 개수를 출력하면 된다. 

 

public int solution(int[] nums) {
    HashSet<Integer> hs = new HashSet<>();

    for (int n : nums) {
        hs.add(n);
    }

    return hs.size() > nums.length / 2 ?  nums.length / 2 : hs.size();
}

코드는 생각보다 간결하다. 물론 더 간결하게도 가능한걸로 알고 있다. 

 

아래는 HashSet의 중복을 허용하지 않는 특징을 이용해서 포켓몬의 종류를 담는 코드이다.

HashSet<Integer> hs = new HashSet<>();

for (int n : nums) {
    hs.add(n);
}

포켓몬은 N/2 마리만 데려갈 수 있기때문에 포켓몬의 종류가 데려갈 수 있는 포켓몬보다 크다면 결국 N/2의 값이 종류가 가장 많은 경우의 값이 된다. 반대라면 hs의 총 사이즈가 포켓몬을 데려갈 때 종류가 가장 많은 값이 된다. 

return hs.size() > nums.length / 2 ?  nums.length / 2 : hs.size();

 

'개발 > baekjoon&programmers' 카테고리의 다른 글

[프로그래머스]크레인 인형뽑기 게임(java)  (0) 2023.06.29
[백준]괄호(java)  (0) 2023.06.29
[프로그래머스]추억 점수(java)  (0) 2023.06.28
[프로그래머스]의상(java)  (0) 2023.06.28
[백준]1032번(java)  (0) 2023.06.27