[프로그래머스] 롤케이크 자르기 JAVA

AMUD·2022년 12월 5일
1

Algorithm

목록 보기
52/78

문제


문제링크

접근

  • 처음에는 단순히 두 배열로 풀이했다가 모든 문제가 시간초과가 걸렸다.
  • 여러 가지 고민을 해보다가 다른 사람들의 풀이를 보고 이해하고 스스로 직접 풀었다.
  • HashSet과 HashMap 둘 다 사용하는데, 같은 객체로 보이더라도 다른 자료형을 사용한다는 생각을 가져보도록 하자.

소스코드

import java.util.*;

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;
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글