코딩테스트 - 프로그래머스/Lv. 0

[42] JAVA 피자 나눠먹기

유혁스쿨 2023. 11. 17. 11:45
728x90
반응형

문제 설명
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.

제한사항

  • 1 ≤ n ≤ 100

입출력 예

n result
7 1
1 1
15 3

 

입출력 예 #1

  • 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.

입출력 예 #2

  • 1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.

입출력 예 #3

  • 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.

[나의 풀이]

class Solution {
    public int solution(int n) {
        return n % 7 > 0 ? n / 7 + 1 : n / 7;
    }
}

 

[풀이과정] 

  1. 인원수를 피자조각인 7로 나눈다
    1. 나머지가 0보다 크면 몫 + 1조각을 반환
    2. 나머지가 0이면 몫을 반환

인원수를 7조각으로 나눴을 때 몫은 피자 판수가 된다.

만약 나머지가 없이 나누어 진 경우, 나머지는 최소 판 수 이기 때문에 피자 판수를 그대로 반환하면 되지만

나머지가 0보다 클 경우는 해당나머지 만큼의 피자 조각이 있어야 되므로 피자 한판을 추가한다.


[다른 풀이] Arrays.sort([] args)

class Solution {
    public int solution(int n) {
        return (n + 6) / 7;
    }
}

 

정수론 적으로 접근했을 때, 6은 '어떤 수를 7로 나누면 나머지가 0부터 6까지만' 있기때문에 지정한 숫자이다.

나머지의 최댓값을 더해서 나누게 되면, 나머지가 최소조각인 경우까지 합할수 있으니까...

그냥 잘 모르겠다 

 

728x90
반응형