function solution(topping) {
// 각각 왼쪽과 오른쪽의 토핑 개수를 저장할 Map을 생성
const right = new Map();
const left = new Map();
// 각 토핑을 순회하면서 오른쪽 토핑의 개수를 저장
for (const t of topping) {
if (right.get(t)) right.set(t, right.get(t) + 1); // 이미 등록된 토핑이면 개수를 1 증가
else right.set(t, 1); // 등록되지 않은 토핑이면 1로 초기화합니다.
}
let result = 0;
// 각 토핑을 순회하면서 왼쪽 토핑의 개수와 오른쪽 토핑의 개수를 갱신하고,
// 왼쪽과 오른쪽의 토핑 개수가 같으면 결과값에 추가
for (const t of topping) {
if (right.get(t) > 1) right.set(t, right.get(t) - 1); // 오른쪽 토핑 개수를 하나 감소
else right.delete(t); // 오른쪽 토핑 개수가 1이면 Map에서 해당 토핑을 삭제
if (left.get(t)) left.set(t, left.get(t) + 1); // 왼쪽 토핑 개수를 증가
else left.set(t, 1); // 등록되지 않은 토핑이면 1로 초기화
if (left.size === right.size) result++; // 왼쪽과 오른쪽의 토핑 개수가 같으면 결과값에 추가
}
return result;
}