https://school.programmers.co.kr/learn/courses/30/lessons/132265
중복인 토핑을 카운트하지 않기 위해 set을 쓴다.
각각 왼/오른쪽 끝 부터 출발하여 토핑 가지수를 l[], r[]에 기록한다.
자르는 모든 경우의 수에 대해 lcnt와 rcnt가 같다면 answer++ 한다.
import java.util.*;
class Solution {
int[] topping;
int T, answer;
// 왼/오른 쪽 부터 잘랐을 때 포함되는 토핑 개수
int[] l, r;
int solve() {
Set<Integer> set = new HashSet<>();
for(int i=0; i<T; i++) {
set.add(topping[i]);
l[i] = set.size();
}
set.clear();
for(int i=T-1; i>=0; i--) {
set.add(topping[i]);
r[i] = set.size();
}
for(int i=0; i<T-1; i++) {
if(l[i] == r[i+1])
answer++;
}
return answer;
}
public int solution(int[] topping) {
this.topping = topping;
T = topping.length;
l = new int[T];
r = new int[T];
return solve();
}
}
'[프로그래머스] 절대 외부 IDE를 써선 안돼 > Java' 카테고리의 다른 글
[lv3] 합승 택시 요금 (0) | 2024.11.30 |
---|---|
[lv2] 땅따먹기 (0) | 2024.11.23 |
[lv2] 게임 맵 최단거리 (0) | 2024.11.19 |
[lv2] 영어 끝말잇기 (1) | 2024.11.19 |
[lv2] 숫자의 표현 (2) | 2024.11.19 |