문제
문제링크
접근
- 처음에는 단순히 두 배열로 풀이했다가 모든 문제가 시간초과가 걸렸다.
- 여러 가지 고민을 해보다가 다른 사람들의 풀이를 보고 이해하고 스스로 직접 풀었다.
- HashSet과 HashMap 둘 다 사용하는데, 같은 객체로 보이더라도 다른 자료형을 사용한다는 생각을 가져보도록 하자.
소스코드
import java.util.*;
class Solution {
public int solution(int[] topping) {
int answer = 0;
int size = topping.length;
HashSet<Integer> first = new HashSet<>();
HashMap<Integer, Integer> second = new HashMap<>();
first.add(topping[0]);
for (int i = 1;i < size; i++) {
second.put(topping[i], second.getOrDefault(topping[i], 0) + 1);
}
for (int i = 1;i < size; i++) {
first.add(topping[i]);
second.put(topping[i], second.get(topping[i]) - 1);
if (second.get(topping[i]) == 0) {
second.remove(topping[i]);
}
if (first.size() == second.size()) answer++;
}
return answer;
}
}