프로그래밍/Python

프로그래머스_python lv0. 피자 나눠 먹기(3)

O'bin 2023. 1. 12. 10:13

https://school.programmers.co.kr/learn/courses/30/lessons/120816

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

내 답안 : 

 

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

 

피자 나눠먹기(1)과 굉장히 유사하고 조각 수가 정해져있지 않고 매개변수로 주어진다는 점만 다르기 때문에 쉽게 풀었다.

인원 수에서 1명을 뺀 값을 조각 수로 나누고, 앞에서 뺀 한명이 한조각을 보장받으려면 한 판이 더 필요하므로 마지막에 1을 더해준다.

이게 이 문제를 푸는 데에 가장 간단한 코드인 것 같다.

 

 

 

개선안 : 

 

1
2
3
4
5
6
7
def solution(slice, n):
    # n(인원 수)를 slice(조각 수)로 나눈 몫, 나머지를 d,m에 넣기
    d, m = divmod(n, slice)
    
    # 필요한 피자 판 수(d)를 반환하는데, 
    # 나머지가 0이 아닐 경우 한 판이 더 필요하므로 1 더하기
    return d + int(m != 0)
cs

 

내 답안만큼 짧고 간단한 코드는 아니지만 더 직관적인 코드인 것 같아 정리해둔다.