반응형
프로그래머스 폰켓몬 - JAVA
문제 설명
- 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2 마리를 가져간다.
- 폰켓몬은 종류에 따라 번호를 붙여 구분. 같은 종류의 폰켓몬은 같은 번호를 가진다.
- 최대한 많은 종류의 폰켓몬을 포함해서 N/2 마리를 선택.
- 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return.
제한 사항
- nums는 폰켓몬의 종류 번호가 담긴 1차원 배열입니다.
- nums의 길이(N)는 1 이상 10,000 이하의 자연수이며, 항상 짝수로 주어집니다.
- 폰켓몬의 종류 번호는 1 이상 200,000 이하의 자연수로 나타냅니다.
- 가장 많은 종류의 폰켓몬을 선택하는 방법이 여러 가지인 경우에도, 선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 return 하면 됩니다.
문제 풀이
- nums 배열에서 몇 종류의 폰켓몬이 존재하는지 찾는다.
- nums배열을 순회하며 HashSet에 넣음으로, 중복이 제거되어 종류의 수를 알 수 있다.
- 종류의 수가 N/2보다 많은 경우 N/2를, 적은경우 종류의 수를 return.
소스 코드
import java.util.*;
class Solution {
public int solution(int[] nums) {
Set<Integer> set = new HashSet<>(); // 1
for (int i = 0; i < nums.length; i++) {
set.add(nums[i]);
}
return set.size() >= nums.length / 2 ? nums.length / 2 : set.size(); // 2
}
}
반응형
'알고리즘(Algorithm) > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스] 3진법 뒤집기 - JAVA (0) | 2021.10.23 |
---|---|
[프로그래머스] 약수의 개수와 덧셈 - JAVA (0) | 2021.10.23 |
[프로그래머스] 체육복 - JAVA (0) | 2021.10.22 |
[프로그래머스] K번째수 - JAVA (0) | 2021.10.22 |
[프로그래머스] 내적 - JAVA (0) | 2021.10.22 |