본문 바로가기

Python(알고리즘,문제풀이)/프로그래머스(입문100제)

코딩테스트입문 / 치킨 쿠폰

728x90

📚문제

출처 : 프로그래머스 / 치킨 쿠폰(https://school.programmers.co.kr/learn/courses/30/lessons/120884)

 

📝풀이

def solution(chicken):
    cnt = 0
    while chicken >=10:
        service = chicken // 10
        coupon = chicken % 10
        cnt += service 
        chicken = service + coupon
    return cnt

서비스 쿠폰을 받아서 계속 더해가는 이런 류의 문제를 많이 본것 같은데

(병을 모으는데 10병 모으면 한병 더...뭐 이런) 

생각보다 어려웠다.... 

 

구글링 참고

우선 중요한 것은

cnt (정답:서비스 치킨의 수)는

while문 밖에 두어서 반복과 동일하게 증가하도록 한다

 

service에는 치킨의 수를 10으로 나누어( 쿠폰 10장으로 먹는 셈치고) 나온 몫 값을 추가

=> 10장이면 서비스 치킨인데 서비스 치킨 총 몇개 먹을 수 있나

 

coupon은 치킨의 수를 10으로 나누어 ( 마찬가지로 쿠폰 10장으로 바꾸어 먹고 ) 나머지 값 추가

=> 10장으로 서비스 치킨 다 시키고 남은 쿠폰이 몇개인가

 

cnt에는 service 치킨의 개수 추가

 

chicken = service + coupon

이 부분이 잘 생각이 안 났다.

일단 while문을 돌려면 치킨의 개수가 변경되어야하고

그 치킨을 어떤 값으로 해주어야 하는지가 머릿속에서 안 떠올랐다

chicken = 1081

# 치킨 시켜먹고 쿠폰 있는 상태에서 서비스 치킨부터 시작
service_chicken = chicken // 10 # 서비스 치킨 108 마리
coupon = chicken % 10 # 남은 쿠폰 1


while True:
    if service_chicken < 10:
        return service_chicken
        break
    else:
        coupon += service_chicken % 10
        service_chicken  += service_chicken // 10
        .
        .
        .
        .

그래서 이런 식으로 코드짜다가 포기...

 

아무튼 위처럼 코드를 짜주면 cnt에는 계속 서비스 치킨만 추가가 되고 

치킨이 10마리 이하(서비스 치킨 발생하지 않을 때)될 때까지 반복된다

728x90