피자 나눠 먹기 (3)

2024. 7. 10. 18:00코딩테스트 입문

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

 

프로그래머스

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

programmers.co.kr


문제 설명
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 2 ≤ slice ≤ 10
  • 1 ≤ n ≤ 100

입출력 예

slice n result
7 10 2
4 12 3

입출력 예 설명
입출력 예 #1

  • 10명이 7조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 2판을 시켜야 합니다.

입출력 예 #2

  • 12명이 4조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 3판을 시켜야 합니다.

피자 나눠 먹기 (1)과 유사하지만, 여기서는 slice를 주어진다는 점이 다릅니다.

사실 그래도 문제를 푸는 방법은 동일합니다.

이번에는 패키지 없이 풀어보도록 하겠습니다. 자바를 사용합니다.

class Solution {
    public int solution(int slice, int n) {
        int answer = (n + slice - 1) / slice;
        return answer;
    }
}

결국 핵심은 n을 다음 slice 배수의 최소값으로 설정한다는 점입니다.

만약 n <= 7 * k (k는 최소값)라고 가정한다면, 7 * k <= n + (slice - 1) <= 7 * (k + 1)이 되기 때문입니다.


정답은 결국 n보다 큰 가장 작은 slice 배수 / slice임을 안다면 간단한 문제입니다.

'코딩테스트 입문' 카테고리의 다른 글

옷가게 할인 받기  (0) 2024.07.12
배열의 평균값  (0) 2024.07.11
피자 나눠 먹기 (2)  (0) 2024.07.09
피자 나눠 먹기 (1)  (0) 2024.07.08
짝수는 싫어요  (0) 2024.07.07