https://school.programmers.co.kr/learn/courses/30/lessons/132265
철수와 동생이 먹게되는 토핑의 종류 수가 같아야 한다.
토핑별로 몇개가 있는지 카운트해주고(countBy)
왼쪽부터 커팅했을 때 철수가 갖게 되는 토핑의 종류(culsoo.size())와, 남아있는 토핑의 종류(countBy.size())를 카운트해가며 비교했다.
import java.util.*;
class Solution {
public int solution(int[] topping) {
Map<Integer, Integer> countBy = new HashMap();
for (int t : topping) {
int cnt = countBy.getOrDefault(t, 0);
countBy.put(t, ++cnt);
}
int answer = 0;
Set<Integer> chulsoo = new HashSet();
for (int t : topping) {
int cnt = countBy.get(t);
if (cnt > 1) {
countBy.put(t, --cnt);
} else {
countBy.remove(t);
}
chulsoo.add(t);
if (chulsoo.size() == countBy.size()) answer++;
else if (chulsoo.size() > countBy.size()) break;
}
return answer;
}
}