Python(알고리즘,문제풀이)/프로그래머스(입문100제)
코딩테스트입문 / 치킨 쿠폰
박혀노
2023. 8. 8. 09:06
728x90
📚문제
📝풀이
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