[문제 링크]
https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=java
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[풀이 과정]
결국 각각의 갯수를 기록하고 찾아야하는 문제이기 때문에 Map 자료구조를 활용하였다.
일단 (숫자, 갯수)를 Map에 집어넣고 머리를 굴렸다.
처음에는 for문으로 하나씩 돌려서 해볼까 했지만 시간초과가 뜰 것 같았다.
손으로 예제를 적으면서 해보니 map의 size가 nums.length / 2 보다 크면
어짜피 반을 들고 가야하니 nums.length / 2가 답이고 반대면 map.size가 답인 결론이 나왔다.
[코드]
import java.util.*;
class Solution {
public int solution(int[] nums) {
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++) {
map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
}
if(map.size() > (nums.length / 2)) {
return nums.length / 2;
} else {
return map.size();
}
}
}
[회고]
생각보다 헷갈렸지만 떠오르는 순간 쉬웠습니다.
질문과 피드백은 언제나 환영입니다.
감사합니다.
'CodingTest > Programmers' 카테고리의 다른 글
[Programmers] 기능개발 (0) | 2025.04.03 |
---|---|
[Programmers] 베스트앨범 (0) | 2025.04.01 |
[Programmers] 의상 (1) | 2025.03.29 |
[Programmers] 전화번호 목록 (0) | 2025.03.28 |
[Programmers] 완주하지 못한 선수 (0) | 2025.03.27 |