프로그래머스-치킨쿠폰(파이썬, python)

SA Jung·2022년 10월 1일
0

Programmers 문제 풀이

목록 보기
8/14

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

git 바로가기

1. 몫과 나머지를 계산하여 치킨과 쿠폰 갯수 판별하기

def solution(chicken):
    answer = 0
    while chicken >= 10:
        div = chicken // 10
        mod = chicken % 10
        answer += div
        chicken = div+mod
    return answer
  • 위의 입출력 예(2)를 보고 알고리즘 분석을 하자면
    • 현재 1081마리의 치킨을 시켰으므로 1081 개의 쿠폰을 가지고 있다.
    • 1081의 쿠폰을 가지고 10개의 쿠폰당 1마리의 치킨을 서비스로 주기 때문에 1081//10을 통해 108마리의 치킨을 더 시킬 수 있다. 따라서 108개의 쿠폰을 더 받을 수 있고, 1081개의 쿠폰중 1080을쓰고 남은 1개의 쿠폰과 108개의 쿠폰을 더해서 109개의 쿠폰을 가지고 있다.
    • 이어서 109개의 쿠폰을 가지고 서비스 치킨을 시키면 10마리의 치킨을 시키고 9개의 쿠폰이 남는다. 10마리의 치킨을 시켰으므로 남은 쿠폰과 합치면 19개의 쿠폰을 가지고 있다.
    • 19개의 쿠폰 -> 10개의 쿠폰을 써서 1마리의 서비스 치킨 -> 남은 9개의 쿠폰 + 서비스 치킨의 1개의 쿠폰 = 10개의 쿠폰
    • 마지막으로 10개의 쿠폰으로 1마리의 치킨을 시킨다.
    • 따라서, 서비스로 받은 치킨의 갯수는 108+10+1+1 = 120마리이다.

2. divmod를 이용한 조금 더 간결한 알고리즘 구현

def solution(chicken):
    answer = 0
    while chicken >= 10:
        div, mod = divmod(chicken, 10)
        answer += div
        chicken = div+mod
    return answer
profile
Tomorrow will be better than yesterday :)

0개의 댓글