728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
당신은 최대한 다양한 종류의 폰켓몬을 가지길 원하기 때문에, 최대한 많은 종류의 폰켓몬을 포함해서 N/2마리를 선택하려 합니다. N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때, N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성해주세요.
📍 코드
import java.util.*;
class Solution {
public int solution(int[] nums) {
int answer = 0;
int n = nums.length / 2;
HashSet<Integer> set = new HashSet<Integer>();
for(int i = 0; i < nums.length; i++){
if(!set.contains(nums[i])) set.add(nums[i]);
}
return set.size() > n ? n : set.size();
}
}
💡접근법
- set은 중복으로 담을 수 없다.
- contains를 통해 포함되어 있는지 확인할 수 있다.
- 한 종류에 한 마리씩만 카운트한 수 (set.size())와 선택할 수 있는 수 (n) 중 작은 사이즈를 반환하면 된다.
- 문제 이해가 어렵지만, 결론적으로 한 종류에 한 마리씩 카운트한 수와 같다.
- 최대 n/2 마리 선택할 수 있는데 그보다 종류가 적다면, 한 종류씩 카운트한 수를 반환하고,
- 그게 아니라면 최대 선택할 수 있는 n/2 마리를 반환한다는 말이다.
- 문제 이해가 어렵지만, 결론적으로 한 종류에 한 마리씩 카운트한 수와 같다.
가끔 코테 연습을 하다보면
문제 풀이보다 문제 이해가 더 중요하고, 애먹는 걸 느낀다...
국어 공부가 필요한 건가 하는 생각도 든다 😂
이럴 때 [질문하기]는 정말 좋은 기능인 것 같다.
728x90
반응형
'💻코딩 > 💡Programmers' 카테고리의 다른 글
| [프로그래머스|JAVA] 의상 | 2️⃣번째 풀이 | Map 활용하여 간결 & 가독성 좋게 💡 , 향상된 for문, getOrDefault() (4) | 2025.08.14 |
|---|---|
| [프로그래머스|JAVA] 완주하지 못한 선수 | Map 사용 ⭕️ , getOrDefault(), 향상된 for문 연습 중💬, iterator() 활용 (2) | 2025.08.14 |
| [프로그래머스|JAVA] 가장 큰 수 찾기 | Level 0 (0) | 2025.08.14 |
| [프로그래머스|JAVA] 자연수 뒤집어 배열로 만들기 | Stream 방식 (1) | 2025.08.14 |
| [프로그래머스|JAVA] 전화번호 목록 | startsWith(), sort 사용 ⭕️ | HashSet 사용 ❌ (3) | 2025.07.31 |
