공부/프로그래머스

[프로그래머스] 롤케이크 자르기 - 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
반응형