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();
'개발 > PS' 카테고리의 다른 글
[프로그래머스]크레인 인형뽑기 게임(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 |