
-Code
import java.util.*;
class Solution {
public int solution(int[] topping) {
// 나는 map으로 갯수 관리하고 동생은 set으로 중복 관리
Map<Integer, Integer> me = new HashMap<>();
Set<Integer> brother = new HashSet<>();
for (int t : topping) {
me.put(t, me.getOrDefault(t, 0) + 1);
}
// 종류가 같은지 계산
int answer = 0;
for (int i = 0; i < topping.length; i++) {
// 나의 토핑 갯수 제거
me.put(topping[i], me.get(topping[i]) - 1);
// 0개가 남으면 제거
if (me.get(topping[i]) == 0) {
me.remove(topping[i]);
}
// 나의 토핑을 하나 동생에게 넘기기
brother.add(topping[i]);
// 갯수가 같다면 증가
if (me.size() == brother.size()) {
answer++;
}
}
return answer;
}
}
처음에 단순하게 Deque 2개와 Set 2개로 관리하려 했으나 너무 얕게 생각해서 시간 초과였습니다. 그래서 힌트로 받은게 map과 set을 이용해라 였고 활용해 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [프로그래머스/Java] 튜플 (0) | 2026.03.27 |
|---|---|
| [백준/Java] 33257번 상현이의 물리학및실험1 실험 대작전 (0) | 2026.03.27 |
| [프로그래머스/Java] 개인정보 수집 유효기간 (0) | 2026.03.26 |
| [백준/Java] 6069번 Honey and Milk Land (0) | 2026.03.26 |
| [프로그래머스/Java] 택배 상자 꺼내기 (0) | 2026.03.25 |