https://school.programmers.co.kr/learn/courses/30/lessons/132265
풀이 - 나의 생각
Set을 통해 주어진 Topping의 가짓수를 세면 편합니다.
위의 그림처럼
왼쪽, 오른쪽 각각의 방향에서 가짓수를 체크합니다.
그 후에 롤케이크를 잘랐을 때 가짓수가 같은 경우를 세면 정답을 알 수 있습니다.
주의할 점은
왼쪽의 인덱스가 2일 경우는 0 ~ 2까지의 토핑 가짓수입니다.
오른쪽의 인덱스가 2일 경우 2 ~ n까지의 토핑 가짓수입니다.
그렇기때문에 두 경우를 비교하기 위해서는
first[i] == second[i+1] 로 비교 해야 합니다.
코드
import java.util.*;
class Solution {
public int solution(int[] topping) {
/*
각 조각에 동일한 가짓수의 토핑이 올라가면 공평하게 롤케이크가 나누어진 것임
*/
int answer = 0;
int len = topping.length;
int[] first = new int[len], second = new int[len];
Set<Integer> fNums = new TreeSet<>();
Set<Integer> sNums = new TreeSet<>();
for(int i = 0; i < len; i++){
fNums.add(topping[i]);
first[i] = fNums.size();
sNums.add(topping[len-i-1]);
second[len-i-1] = sNums.size();
}
for(int i = 0; i < len-1; i++){
if(first[i] == second[i+1]) answer++;
}
return answer;
}
}
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
월간 코드 챌린지 시즌2 > 2개 이하로 다른 비트 (1) | 2024.01.21 |
---|---|
코딩테스트 연습 > 택배상자 - JAVA (0) | 2024.01.21 |
2019 KAKAO BLIND RECRUITMENT > 오픈채팅방 - JAVA (0) | 2024.01.12 |
Summer/Winter Coding(~2018) > 스킬트리 - JAVA (0) | 2024.01.11 |
코딩테스트 연습 > 땅따먹기 - JAVA (1) | 2024.01.11 |