https://school.programmers.co.kr/learn/courses/30/lessons/132265
전체 토핑 가지수와 각 토핑의 개수를 세준다음에
첫 topping부터 HashSet에 한개씩 넘겨주면서 전체 토핑에서 토핑의 개수가 0이 되버리면 그 토핑을 Map에서 빼줍니다.
토핑의 가지수가 동일할때 개수를 세줍니다.
HashSet,HashMap
import java.util.HashMap;
import java.util.HashSet;
class Solution {
public int solution(int[] topping) {
int answer = 0;
HashMap<Integer,Integer> All = new HashMap<>();
//총 토핑가지수와 각 토핑개수 체크
for(int index = 0; index <topping.length;index++){
All.put(topping[index],All.getOrDefault(topping[index],0)+
1);
}
//철수가 가지는 토핑개수
HashSet<Integer> chel = new HashSet<>();
for(int start = 0; start <topping.length;start++){
chel.add(topping[start]);
//전체 토핑에서 현재 넘겨준 토핑을 뻬준다.
All.put(topping[start],All.get(topping[start])-1);
//토핑개수가 0이되면 MAp에서 없애줌.
if(All.get(topping[start]) == 0){
All.remove(topping[start]);
}
//둘의 size가 같을 때 == 동일한 가짓수
if(chel.size() == All.size())
answer+=1;
}
return answer;
}
}