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

namkun·2023년 3월 4일
0

코딩테스트

목록 보기
74/79

문제 링크

롤케이크 자르기

풀이

  • 토핑을 처음에 모두 형에게 준다고 생각하고 topping 배열을 Map<topping 종류, topping 개수> 로 만든다.

  • 동생의 롤케이크를 Set으로 만들고, 그 다음에 topping 배열을 순차적으로 돌면서 동생의 Set에 넣고, 형의 Map에서 제거한 뒤 동생과 형의 종류 개수를 비교한다. (Map의 key 개수와 Set의 크기)

    import java.util.*;
    
      class Solution {
          public int solution(int[] topping) {
              int answer = 0;
    
              Map<Integer, Integer> olderBrothrerMap = new HashMap<>();
              Arrays.stream(topping).forEach(i -> olderBrothrerMap.put(i, olderBrothrerMap.getOrDefault(i, 0) + 1));
              Set<Integer> youngerBrother = new HashSet<>();
              for (int i : topping) {
                  youngerBrother.add(i);
    
                  if (olderBrothrerMap.containsKey(i)) {
                      if (olderBrothrerMap.get(i) == 1) {
                          olderBrothrerMap.remove(i);
                      } else {
                          olderBrothrerMap.put(i, olderBrothrerMap.get(i) - 1);
                      }
                  }
    
                  if (youngerBrother.size() == olderBrothrerMap.keySet().size()) {
                      answer++;
                  }
              }
    
              return answer;
          }
      }
profile
개발하는 중국학과 사람

0개의 댓글