티스토리 뷰
무조건 롤케이크는 2개로 쪼개진다는 것이 핵심인 문제이다.
이런식으로 쪼갰을때, X안에 들어있는 토핑의 종류와 Y안에 들어있는 토핑의 종류가 같아야 한다.
그러면, 앞에서 부터 쭉 밀자. 모든 토핑을 동생에게 먼저주고, 나는 앞에서 부터 토핑을 하나씩 추가하면 된다.
그런데, 토핑의 '개수'가 아닌 '종류'가 중요하다고 한다. 그래서 Map으로 토핑별 개수를 관리하고, 앞에서 탐색을 진행할대마다, 2개의 map에 존재하는 key개수가 서로 일치하는지 확인하면 된다.
import java.util.*;
class Solution {
private final Map<Integer, Integer> A = new HashMap<>();
private final Map<Integer, Integer> B = new HashMap<>();
public int solution(int[] topping) {
int answer = 0;
makingSumB(topping);
System.out.println(B);
for (int i=0; i<topping.length; i++) {
int t = topping[i];
if(B.get(t) == 1) B.remove(t);
else B.put(t, B.get(t)-1);
if(A.get(t) == null) A.put(t, 1);
else A.put(t, A.get(t) + 1);
if (isEqualSize()) answer++;
}
return answer;
}
private void makingSumB(int[] topping) {
for(int i=0; i<topping.length; i++) {
int t = topping[i];
if (B.get(t) == null) {
B.put(t, 1);
}
else B.put(t, B.get(t) + 1);
}
}
private boolean isEqualSize() {
return A.size() == B.size();
}
}
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- go
- 공지
- Operating System
- java
- network
- ARP
- soft delete
- fiber
- algorithm
- paging
- effective
- Effective Java
- OS
- mmu
- spring
- GORM
- Database
- cs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함