문제 출처 - Programmers
문제는 여기
코딩테스트 연습 - 폰켓몬
당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.
programmers.co.kr
[풀이]
1. max를 N/2마리로 담아준다.
2. 중복 허용이 되지 않는 HashSet에 값들을 넣어준다.
3. 중복이 제거된 2. 에서 구한 set의 크기가 1. 에서 구한 max보다 크다면 max를 리턴하고 아니라면 set의 크기를 리턴해준다.
[접근]
1. 중복을 제거해주고 중복이 없는 수와 최대로 데려갈 수 있는 수를 비교해서 처리해주면 되겠다고 생각하였다.
2. N/2마리를 데려갈 수 있는데 중복 없을 때의 수가 N/2보다 적으면 중복 없을 때의 수만큼을 데려갈 수 있고 아니라면 N/2마리를 데려갈 수 있다.
[코드]
import java.util.*;
class Solution {
public int solution(int[] nums) {
// 중복이 없는 상태에 최대로 데려갈 수 있는 경우는 N/2마리
int max = nums.length / 2;
HashSet<Integer> set = new HashSet<>();
// set은 중복허용x
for (int num : nums) {
set.add(num);
}
// 중복을 제거했을 때 max보다 크면 max, 작으면 size를 리턴
return set.size() > max ? max : set.size();
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 예산 (JAVA) (0) | 2022.09.18 |
---|---|
[프로그래머스] 소수 만들기 (JAVA) (0) | 2022.06.01 |
[프로그래머스] 단어 변환 (JAVA) (0) | 2022.05.29 |
[프로그래머스] 최대공약수와 최소공배수 (JAVA) (0) | 2022.05.28 |
[프로그래머스] 최소직사각형 (JAVA) (0) | 2022.05.27 |