토핑을 처음에 모두 형에게 준다고 생각하고 topping 배열을 Map<topping 종류, topping 개수>
로 만든다.
동생의 롤케이크를 Set으로 만들고, 그 다음에 topping 배열을 순차적으로 돌면서 동생의 Set에 넣고, 형의 Map에서 제거한 뒤 동생과 형의 종류 개수를 비교한다. (Map의 key 개수와 Set의 크기)
import java.util.*;
class Solution {
public int solution(int[] topping) {
int answer = 0;
Map<Integer, Integer> olderBrothrerMap = new HashMap<>();
Arrays.stream(topping).forEach(i -> olderBrothrerMap.put(i, olderBrothrerMap.getOrDefault(i, 0) + 1));
Set<Integer> youngerBrother = new HashSet<>();
for (int i : topping) {
youngerBrother.add(i);
if (olderBrothrerMap.containsKey(i)) {
if (olderBrothrerMap.get(i) == 1) {
olderBrothrerMap.remove(i);
} else {
olderBrothrerMap.put(i, olderBrothrerMap.get(i) - 1);
}
}
if (youngerBrother.size() == olderBrothrerMap.keySet().size()) {
answer++;
}
}
return answer;
}
}