happy coding
[level 0] 피자 나눠 먹기(3) 본문
문제 설명
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 ≤ slice ≤ 10
- 1 ≤ n ≤ 100
import math
def solution(slice, n):
return math.ceil(n / slice)
나누는 값이 올림이면 되겠다 싶어서 작성한 코드
다른 사람의 코드
def solution(slice, n):
return ((n - 1) // slice) + 1
위 코드는 왜 (n-1) // slice + 1이라고 했을까. 왜 n // slice + 1이 아닐까
-> (n//slice)일 경우 n=slice 일 때 결과값이 기댓값보다 무조건 1 높게 나오기 때문입니다. 그리고 뒤에 +1을 해주는 이유는 n-1//slice<1일 때 결과값이 0이 되는걸 방지하기 때문
-> n/slice의 올림을 구하라는 문제인데 math 모듈 없이 풀기 위해 내림(나눗셈의 몫)을 한 뒤에 1을 더하는 것. 딱 떨어지는 값은 올림을 한다고 값의 변동이 있지 않기 때문에 분자 n에 1을 빼서 케이스가 딱딱 들어맞게 만들어 준 것.
def solution(slice, n):
d, m = divmod(n, slice)
return d + int(m != 0)
'coding study > programmars' 카테고리의 다른 글
[level 0] 모음 제거 (0) | 2024.05.27 |
---|---|
[level 0] 점의 위치 구하기 (0) | 2024.05.27 |
[level 0] 배열 두 배 만들기 (0) | 2024.05.27 |
[level 0] 최댓값 만들기(2) (0) | 2024.05.27 |
[level 0] n의 배수 고르기 (0) | 2024.05.27 |
Comments