머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
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 : n/7 + 1;
}
}
class Solution {
public int solution(int n) {
return (n + 6) / 7;
}
}
정수론 잘하실 듯.. 6은 '어떤 수를 7로 나누면 나머지가 0부터 6까지만' 있어서 들어간 숫자예요.
주어진 피자를 일곱 조각으로 나누는 경우, 한 사람당 최소한 한 조각의 피자를 먹으려면 n명으로 나눈 뒤, 올림한 값이 필요한 피자의 수입니다. 하지만, 올림을 계산하는 대신, 위의 코드에서는 (n + 6) / 7 식을 사용하여 필요한 피자의 수를 계산합니다.
이 식은 다음과 같이 유도될 수 있습니다. 예를 들어, n = 15인 경우를 살펴보겠습니다. 이 경우, 15명의 사람이 피자를 먹기 위해서는 ceil(15/7) = 3 조각의 피자가 필요합니다. 이를 (n + 6) / 7 식으로 계산해보면 (15 + 6) / 7 = 2.1428... 입니다. 따라서, 이 값의 올림인 3이 필요한 피자의 수와 일치합니다.
이 식이 유용한 이유는, ceil() 함수를 사용하지 않아도 되기 때문입니다. ceil() 함수를 호출하는 것은 성능에 악영향을 줄 수 있으므로, 이러한 간단한 수학식을 사용하여 더 효율적으로 문제를 해결할 수 있습니다.
import java.lang.Math;
class Solution {
public int solution(int n) {
return (int) Math.ceil(n/7.0);
}
}
Java에서도 Math.ceil() 함수를 사용하여 숫자를 올림할 수 있습니다. 주의해야 할 점은, Python과 달리 Java에서 정수 나눗셈은 결과가 정수로 반환되기 때문에, n을 7.0으로 나누어야 합니다. 또한 Math.ceil() 함수의 결과는 double 형식이므로, int로 형변환하여 반환합니다.
참고사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120814/solution_groups?language=java