프로그래머스- 롤케이크 자르기

JIWOO YUN·2023년 3월 24일
0

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/132265

구현방법

전체 토핑 가지수와 각 토핑의 개수를 세준다음에

첫 topping부터 HashSet에 한개씩 넘겨주면서 전체 토핑에서 토핑의 개수가 0이 되버리면 그 토핑을 Map에서 빼줍니다.

토핑의 가지수가 동일할때 개수를 세줍니다.

구현알고리즘

HashSet,HashMap

CODE

import java.util.HashMap;
import java.util.HashSet;

class Solution {
    public int solution(int[] topping) {
        int answer = 0;

        HashMap<Integer,Integer> All = new HashMap<>();

        //총 토핑가지수와 각 토핑개수 체크
        for(int index = 0; index <topping.length;index++){
            All.put(topping[index],All.getOrDefault(topping[index],0)+
                    1);
        }

        //철수가 가지는 토핑개수
        HashSet<Integer> chel = new HashSet<>();
        for(int start = 0; start <topping.length;start++){
            chel.add(topping[start]);
            
            //전체 토핑에서 현재 넘겨준 토핑을 뻬준다.
            All.put(topping[start],All.get(topping[start])-1);
            //토핑개수가 0이되면 MAp에서 없애줌.
            if(All.get(topping[start]) == 0){
                All.remove(topping[start]);
            }
            
            //둘의 size가 같을 때 == 동일한 가짓수
            if(chel.size() == All.size())
                answer+=1;
        }

        return answer;
    }
}
profile
열심히하자

0개의 댓글