- 문제
https://programmers.co.kr/learn/courses/30/lessons/1845
코딩테스트 연습 - 폰켓몬
당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.
programmers.co.kr
- 분석 및 접근
해당 문제는 단순히 중복을 제거한 후, 가져갈 수 있는 최대 포켓몬의 수를 구하는 문제이다.
중복을 제거할 수 있는 다양한 방법이 존재하겠지만, 필자는 Set Collection을 사용했다. Set은 Map과는 다르게 중복된 값을 가지지 않기 때문이다.
결론적으로, 포켓몬의 종류가 담긴 배열의 값을 모두 Set 변수에 담은 후 Set에 저장된 값의 개수(size)가 distinct한 포켓몬의 종류의 개수가 된다. 이에 따라 포켓몬의 개수 N의 반인 N / 2과 Set의 size를 비교해 가질 수 있는 최대 포켓몬 종류를 구한다.
import java.util.*;
class Solution {
public int solution(int[] nums) {
int answer = 0;
int len = nums.length;
Set<Integer> set = new HashSet<>();
for(int index = 0; index < len; index++) {
set.add(nums[index]);
}
int half = len / 2;
if(set.size() < half) {
answer = set.size();
}
else answer = half;
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[찾아라 프로그래밍 마에스터 - 게임 맵 최단거리] (0) | 2021.07.26 |
---|---|
[연습 문제 - 이상한 문자 만들기] (0) | 2021.07.25 |
[2018 KAKAO BLIND RECRUITMENT] 파일명 정렬 (0) | 2021.04.03 |
[2019 카카오 개발자 겨울 인턴십] 튜플 (0) | 2021.04.03 |
[2021 KAKAO BLIND RECRUITMENT] 순위 검색 (0) | 2021.03.31 |
댓글