happy coding

[level 0] 피자 나눠 먹기(3) 본문

coding study/programmars

[level 0] 피자 나눠 먹기(3)

yeoonii 2024. 5. 27. 21:15

문제 설명

머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 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