공부/프로그래머스
[프로그래머스] 롤케이크 자르기 - Java
빈v
2024. 8. 5. 22:33
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/132265
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
프로그래머스 롤케이크 자르기 자바 풀이
난이도: Lv2
풀이
롤케이크 첫 조각을 기준으로 토핑을 나눈 후,
두번째 조각에 토핑을 전부 추가한다.
HashSet, HashMap을 이용하여 중복되는 케이크 토핑 종류가 없게 한다.
두번째 조각에서 첫번째 조각으로 하나씩 옮겨 사이즈를 비교한다.
코드
import java.util.HashMap;
import java.util.HashSet;
class Solution {
public int solution(int[] topping) {
int answer = 0;
int size = topping.length;
HashSet<Integer> first = new HashSet<>();
HashMap<Integer, Integer> second = new HashMap<>();
first.add(topping[0]);
for(int i=1;i<size;i++){
second.put(topping[i],second.getOrDefault(topping[i], 0)+1);
}
for(int i=1;i<size;i++){
first.add(topping[i]);
second.put(topping[i], second.get(topping[i])-1);
if(second.get(topping[i])==0){
second.remove(topping[i]);
}
if(first.size()==second.size()){
answer++;
}
}
return answer;
}
}
728x90
반응형