링크
https://school.programmers.co.kr/learn/courses/30/lessons/1845
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 요약
폰켓몬의 종류가 담긴 배열 nums가 있고, 여기서 가져갈 수 있는 폰켓몬의 최댓값은 nums.length / 2 만큼이다.
나는 최대한 다양한 종류의 폰켓몬을 가져가길 원하기 때문에 최대한 많은 종류를 포함해서 nums.length / 2 마리를 고르려 한다.
이 때 가져갈 수 있는 최대 폰켓몬의 종류 갯수를 구해라. (중복으로 가져가면 해당 폰켓몬의 개수는 무조건 1이다.)
입출력 예시

알고리즘 풀이 순서
1. 가져갈 수 있는 폰켓몬의 최댓값을 구하기 위해 먼저 nums.length를 2로 나눈 값을 max에 대입한다.
2. 중복을 제거한 값을 구하기 위해 Set을 사용해서 nums의 값들을 담는다.
3. 중복이 제거된 Set과 max의 크기를 비교하여 더 작은 것을 리턴한다.
코드
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
int max = nums.length / 2;
HashSet<Integer> numsSet = new HashSet<>();
for (int n : nums)
numsSet.add(n);
if (numsSet.size() > max)
return max;
else
return numsSet.size();
}
}'CodingTest > Programmers' 카테고리의 다른 글
| [프로그래머스 Lv 1] 두 정수 사이의 합 (6) | 2024.11.07 |
|---|---|
| [프로그래머스 Lv 1] 2016년 (7) | 2024.11.06 |