728x90
코드 힌트
- HashMap 사용하기
- HashMap은 키-값 쌍으로 데이터를 저장하는 자료구조입니다. 각 키는 유일해야 하며, 값을 저장할 수 있습니다. 빠른 조회가 가능하여 데이터 접근 속도가 빠릅니다.
- getOrDefault로 카운트하기
- getOrDefault를 사용하여, 해당 키가 없을 경우 기본값으로 0을 설정합니다.
- map.getOrDefault(n, 0)은 n의 값이 없을 때 0을 반환합니다.
- map.keySet() 사용하기
- map.keySet()은 HashMap의 모든 키를 반환하는 메서드입니다.
- 이 키들을 리스트로 변환하여 사용할 수 있습니다.
- keySet.sort()하기
- keySet.sort((o1, o2) -> map.get(o2).compareTo(map.get(o1))) 사용
- 값의 크기를 기준으로 내림차순으로 정렬합니다.
- 오름차순 정렬은 map.get(o1).compareTo(map.get(o2))) 입니다.
- 조건에 따라 처리하기
- 조건에 따른 처리: 최빈값이 하나인지, 여러 개인지에 따라 반환값을 다르게 합니다.
정답은 더보기 클릭
더보기
import java.util.*;
class Solution {
public int solution(int[] array) {
// 1. HashMap 사용하기
HashMap<Integer, Integer> map = new HashMap<>();
// 2. getOrDefault로 카운트하기
for (int n : array) {
map.put(n, map.getOrDefault(n, 0) + 1);
// map.merge(n, 1, Integer::sum);
}
// 3. map.keySet() 사용하기
List<Integer> keySet = new ArrayList<>(map.keySet());
// 4. keySet.sort()하기
keySet.sort((o1, o2) -> map.get(o2).compareTo(map.get(o1)));
// 5. 조건에 따라 처리하기
// size가 1이라면 바로 리턴
// 이 조건이 없다면 else if 절에 있는 조건에서 IndexOutOfBoundsException 에러 발생
if (keySet.size() == 1) {
return keySet.get(0);
}
// 최빈값이 여러개 일 때 -1 리턴
else if (map.get(keySet.get(0)) == map.get(keySet.get(1))) {
return -1;
}
// 최빈값 리턴
return keySet.get(0);
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 배열 만들기 4 (0) | 2024.07.30 |
---|---|
[프로그래머스] 문자열 계산하기 (0) | 2024.07.30 |
[프로그래머스] 합성수 찾기 (0) | 2024.07.29 |
[프로그래머스] 외계행성의 나이 (0) | 2024.07.28 |
[프로그래머스] 9로 나눈 나머지 (0) | 2024.07.28 |