본문 바로가기
문제풀이

롤케이크_자르기-구현 JAVA

by 이숴 2023. 4. 10.
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/132265?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[문제요약]

  • 철수와 동생이 롤케이크를 두 조각으로 잘라서 한조각씩 나눠 먹으려 한다.
  • 롤케이크의 크기보다 롤케이크 위에 올려진 토핑들의 종류에 더 관심이 많다.
  • 잘린 조각의 크기와 올려진 토핑의 개수에 상관없이 각 조각에 동일한 가짓수의 토핑이 올라가면 공평하게 롤케이크가 나누어진 것이다.

[문제풀이]

저는 먼저 철수와 동생의 해쉬맵을 만들어줬습니다. 각각의 토핑의 개수를 저장하기 위해서요!

 

일단은 한 곳에 토핑을 몰아 넣어 저장한 뒤, 하나씩 토핑을 다른 해쉬맵에 전달하면서 같은 토핑의 종류 개수가 나올 시 answer의 값을 증가하는 식으로 해결하였습니다!

[코드]

package org.example;

import java.util.*;

public class 롤케이크_자르기 {

    public int solution(int[] topping) {

        int answer = 0;

        Map<Integer, Integer> dict1 = new HashMap<>();
        Map<Integer, Integer> dict2 = new HashMap<>();

        for (int idx : topping) {
            dict2.put(idx, dict2.getOrDefault(idx, 0) + 1);
        }

        for (int idx : topping) {
            System.out.println(dict1);
            dict1.put(idx, dict1.getOrDefault(idx, 0) + 1);

            if (dict2.get(idx) - 1 == 0) {
                dict2.remove(idx);
            } else {
                dict2.put(idx, dict2.get(idx) - 1);
            }
            if (dict1.size() == dict2.size()) {
                answer++;
            }
        }

        return answer;
    }
}
반응형

'문제풀이' 카테고리의 다른 글

1107 리모컨 - JAVA  (0) 2023.05.02
문자열 폭발 - 문자열  (2) 2023.04.18
위장-해쉬  (0) 2023.04.05
부대복귀-BFS  (0) 2023.03.28
2589-보물섬  (0) 2023.03.21

댓글