[문제]
[풀이]
문제 의도는 이분정렬이나 HashMap 알고리즘을 쓰는 것이었다. 그래서 이분정렬을 이용한 풀이와 HashMap을 이용한 풀이 둘 다 해보았다. 개인적으로는 HashMap을 이용하는 것이 더 쉬웠다. (시간도 더 빨랐다.)
이분정렬 풀이에서는 상한과 하한을 잡는 것이 중요했다. 따라서 하한을 구하는 lower 메소드와 상한을 구하는 upper 메소드를 따로 두어 메인 함수에 적용시켰다.
[백준] 10816번 : 숫자 카드 2 - JAVA [자바] (tistory.com)
이 분의 풀이를 참고했기 때문에 이 게시물에 더 자세하게 설명되어 있다.
HashMap을 이용한 풀이에서는 getOrDefault (Object key, Object defaultValue) 라는 새로운 메소드를 알게 되어 이 메소드를 이용해 풀이하였다. map 엘리먼트의 key를 '입력받은 숫자'로 놓고 value는 '그 숫자의 개수'로 놓았다. getOrDefault를 이용해, 만약 이미 map 객체 엘리먼트 key에 해당 숫자가 있으면 그 숫자에 매핑된 value값을 가져와서 +1 하여 새롭게 put 하고 만약 숫자가 없으면 출력 시 0을 defaultValue로 놓아 0이 출력되도록 한다.
1. 이분정렬 풀이
2. HashMap 풀이
위에서부터 순서대로 HashMap, 이분정렬 풀이이다.
'백준 > JAVA' 카테고리의 다른 글
[JAVA] 백준_1269 (0) | 2023.08.12 |
---|---|
[JAVA] 백준_1764 (0) | 2023.08.11 |
[JAVA] 백준_1620 (0) | 2023.08.05 |
[JAVA] 백준_7785 (0) | 2023.08.04 |
[JAVA] 백준_10815 (0) | 2023.08.03 |