✅ 문제
https://school.programmers.co.kr/learn/courses/30/lessons/1845
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
.
✅ 코드
import java.util.*;
class Solution {
public int solution(int[] nums) {
int answer = 0;
Set<Integer> temp = new HashSet<>();
for (int s : nums) {
temp.add(s);
}
int maxTypes = temp.size();
int maxPick = nums.length / 2;
return Math.min(maxTypes, maxPick);
}
}
✏️ 공부한점
일단 문제자체가 이해가 어려울수있는데
- 홍 박사님 연구실에 N마리 폰켓몬이 있음 → 예: [3, 1, 2, 3]
- 같은 종류는 같은 번호
- 당신은 절반(N/2) 마리만 가져갈 수 있음 → 예: 4마리 중 2마리
- 목표: 가능한 한 많은 종류의 폰켓몬을 갖고 싶음
이렇게 이해하면된다.
즉 [3, 3,3,3] 이렇게있을 경우 결국 1종류밖에없기때문에 2종류를 가져갈수있지만 n/2로 가져갈수있는 최종종류는 1개인거다
그래서 Math.min(maxTypes, maxPick); 이걸로 최소값을 구해서 반환하면된다.
maxTypes는 최대 종류의 수이고 maxPick은 최대로 가져갈수있는수이다.
'Algorithm' 카테고리의 다른 글
| [JAVA 알고리즘] 유연근무제 (0) | 2025.08.20 |
|---|---|
| [JAVA 알고리즘] 바탕화면 정리 (3) | 2025.08.14 |
| [알고리즘] 기본 정렬 알고리즘 (Sorting Algorithms) (4) | 2025.08.06 |
| [SQL 알고리즘] FrontEnd 개발자 찾기 (3) | 2025.07.31 |
| [SQL 알고리즘] 프로그래머스 -대장균들의 자식의 수 구하기 (3) | 2025.07.29 |