728x90
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
처음에는 모든 토핑을 왼쪽에 Map에 넣기, 오른쪽 Map은 비워두기
왼쪽 Map에 있는 토핑을 1개씩 오른쪽 Map에 옮기면서 개수 비교하기
개수 size() 같으면 answer++
import java.util.*;
class Solution {
public int solution(int[] topping) {
int answer = 0;
HashMap<Integer, Integer> left = new HashMap<>();
HashMap<Integer, Integer> right = new HashMap<>();
// 처음엔 왼쪽에 토핑 다 담아두기
for(int t : topping){
left.put(t, left.getOrDefault(t, 0)+1);
}
// 오른쪽에 토핑 하나씩 옮기면서 개수 비교하기
for(int i=topping.length-1; i>1; i--){
int tp = topping[i];
// 오른쪽에 추가
right.put(tp, right.getOrDefault(tp, 0)+1);
// 왼쪽에서 삭제
left.put(tp, left.get(tp)-1);
if(left.get(tp) == 0) left.remove(tp);
// 토핑 개수 비교 > 같으면 경우의 수 ++
if(right.size() == left.size()) answer++;
}
return answer;
}
}'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] 주식 가격 : Java, Stack (0) | 2026.06.17 |
|---|---|
| [Lv.2] 더 맵게 : Java, PriorityQueue (0) | 2026.06.17 |
| [Lv.3] 순위 : Java / 플로이드 워셜 (0) | 2026.03.06 |
| [Lv.3] 가장 먼 노드 : Java (0) | 2026.03.06 |
| [Lv.2] 방문 길이 : Java / 간선 방문 확인 (0) | 2026.03.06 |