[프로그래머스] 피자 나눠 먹기 (3)

Oayenn·2023년 7월 5일
0

Programmers

목록 보기
3/6
post-thumbnail
post-custom-banner

⚙️나의 코드

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)

다른 사람들의 풀이 역시 로직은 비슷하지만, 얼마나 더 효율적으로 구현했느냐에 차이가 있었다.


✏️Solution 1

def solution(slice, n):
    return ((n - 1) // slice) + 1

총 인원 < 피자 조각일 때나 총 인원 > 피자 조각일 때나 몫에 1만 더해주면 된다.
문제는 피자 조각이 총 인원의 약수인 경우다. 이 풀이는 코드를 간결하게 만들기 위해(한 줄로 만들기 위해) 인원에서 -1을 한 것 같다. 그러면 약수의 경우에 대한 코드를 별도로 작성할 필요 없이, 뒤에서 +1을 해도 식이 성립하니까!

이런 생각 어떻게 하지. . .


✏️Solution 2

def solution(slice, n):
    d, m = divmod(n, slice)
    return d + int(m != 0)

divmod(a, b)

  • a를 b로 나눈 몫과 나머지를 튜플 형태로 반환한다.

이 풀이 역시 몫에 0(=int(False)) 또는 1(=int(True))을 더하는 형태다.

profile
차근차근 쌓아올리기
post-custom-banner

0개의 댓글