def solution(slice, n):
return n // slice + 1 if (n % slice != 0) else n // slice
피자 조각이 총 인원의 약수이면 사람을 피자로 나눈 몫을 그대로 반환하고
그 외의 경우에는 몫에 +1을 하는 코드다.
조금 더 간결하게 아래처럼 나타낼 수도 있다.
def solution(slice, n):
return n // slice + (1 if (n % slice != 0) else 0)
다른 사람들의 풀이 역시 로직은 비슷하지만, 얼마나 더 효율적으로 구현했느냐에 차이가 있었다.
def solution(slice, n):
return ((n - 1) // slice) + 1
총 인원 < 피자 조각일 때나 총 인원 > 피자 조각일 때나 몫에 1만 더해주면 된다.
문제는 피자 조각이 총 인원의 약수인 경우다. 이 풀이는 코드를 간결하게 만들기 위해(한 줄로 만들기 위해) 인원에서 -1을 한 것 같다. 그러면 약수의 경우에 대한 코드를 별도로 작성할 필요 없이, 뒤에서 +1을 해도 식이 성립하니까!
이런 생각 어떻게 하지. . .
def solution(slice, n):
d, m = divmod(n, slice)
return d + int(m != 0)
이 풀이 역시 몫에 0(=int(False)) 또는 1(=int(True))을 더하는 형태다.