https://school.programmers.co.kr/learn/courses/30/lessons/132265
왼쪽 계속 증가 오른쪽 계속 감소
오른쪽에 모두 넣어둔 뒤 오른쪽은 감소시키고, 왼쪽에 증가시킴
import java.util.*;
class Solution {
public int solution(int[] topping) {
int answer = 0;
// i번째 인덱스까지 토핑의 개수
// left는 같거나 증가하므로
Map<Integer, Integer> cake1 = new HashMap<>();
Map<Integer, Integer> cake2 = new HashMap<>();
for(int i = 0; i < topping.length; i++) {
cake2.put(topping[i], cake2.getOrDefault(topping[i],0) + 1);
}
for(int i = 0; i < topping.length; i++) {
cake1.put(topping[i], cake1.getOrDefault(topping[i], 0) + 1);
if(cake2.getOrDefault(topping[i], 0) - 1 >0){
cake2.put(topping[i], cake2.getOrDefault(topping[i], 0) - 1);
}else {
cake2.remove(topping[i]);
}
if(cake1.keySet().size() == cake2.size()) {
answer += 1;
}
}
return answer;
}
}
[백준] 14426: 접두사 (0) | 2025.02.03 |
---|---|
[프로그래머스] 방문길이 (0) | 2025.02.03 |
[프로그래머스] 프로세스 (0) | 2025.02.03 |
[프로그래머스] k진수에서 소수 개수 구하기 (0) | 2025.02.01 |
[프로그래머스] [1차] 뉴스 클러스터링 (0) | 2025.02.01 |