728x90
이해하기
처음에는 int 배열을 2개 만들어서 철수와 동생의 케이크를 만들어주고, 그 안의 토핑 개수를 세어 서로 같으면 answer++ 해주도록 코드를 만들었다. 푼지 조금 돼서 기억은 안 나지만 실패했던 것 같다.
그래서 참고한 블로그⬇️
- 해시맵을 2개 만든다.
- 한 해시맵에 케이크 토핑을 전부 넣는다.
- 이 때, 토핑이 중복이라면 개수를 +1 해준다.
- 다른 해시맵에 토핑을 하나씩 옮긴다.
- 두 해시맵의 size를 비교하여 같다면 answer++ 해준다.
문제풀이
import java.util.*;
class Solution {
public int solution(int[] topping) {
int answer = 0;
HashMap<Integer, Integer> map1 = new HashMap<>();
HashMap<Integer, Integer> map2 = new HashMap<>();
for (int n : topping) {
map2.put(n, map2.getOrDefault(n, 0) + 1);
}
for (int n : topping) {
map1.put(n, map1.getOrDefault(n, 0) + 1);
if (map2.get(n) - 1 == 0) {
map2.remove(n);
} else {
map2.put(n, map2.get(n) - 1);
}
if (map1.size() == map2.size()) {
answer++;
}
}
return answer;
}
}
'JAVA > Coding Test Study' 카테고리의 다른 글
[Lv.3] 프로그래머스 - 등굣길 : Java (0) | 2024.04.15 |
---|---|
[Lv.3] 프로그래머스 - 정수 삼각형 : Java (0) | 2024.04.15 |
[Lv.2] 프로그래머스 - 점프와 순간 이동 : Java (0) | 2024.04.15 |
[Lv.3] 입국심사 : Java (0) | 2024.04.05 |
[Lv.3] 징검다리 건너기 : Java (0) | 2024.04.05 |