728x90
문제
접근
- 치킨 한마리당 쿠폰 한개이기 때문에 치킨과 쿠폰을 같다고 생각해도 된다
- 즉, 10마리당 한마리 서비스를 받을 수 있기 때문에 치킨 수를 10으로 나누면 받을 수 있는 서비스 치킨 수가 나오고 이것은 곧 쿠폰수와 동일하다
- 이때 나오는 나머지는 서비스는 받지 못하지만 남은 쿠폰수를 의미한다
예시
1081마리를 주문했다고 가정하면
10으로 나눴을 때 몫 108과 나머지 1이 나온다.
서비스로 받을 수 있는 치킨 수는 108마리이고 이것은 쿠폰수와 동일하다 남은 쿠폰은 1개이다
쿠폰은 총 109개가 된다
109개 쿠폰은 10마리로 바꿀 수 있고 쿠폰 9개가 남는다.
1마리는 1개 쿠폰이기 때문에 다시 쿠폰 19개가 생기고 쿠폰 10개는 1마리로 변환되고 9개 쿠폰이 남는다 9개 쿠폰은 1마리로 변환이 안된다
즉 서비스 치킨의 수는 108 + 10 + 1 +1 로 120이다코드설계
- 10개 밑으로 내려갈때 까지 반복문을 돌려야 하기 때문에 while 사용
- 몫과 나머지가 필요해서 divmod() 함수 사용
- 몫을 answer = 0에 += 으로 더해주면서 할당하고 나머지와 몫을 더한 것은 chicken매개변수에 할당하여 반복
결론
def solution(chicken): answer = 0 while chicken >= 10: #10마리까지만 쿠폰을 받을 수 있다. 9마리면 나눌 필요 없다 # 몫과 나머지를 구해준다 # 여기서 몫은 서비스 치킨의 수 나머지는 남은 쿠폰이다 div,mod = divmod(chicken, 10) answer += div # 몫(서비스로 받을 수 있는 치킨 수를 더해준다) # 몫(서비스로 받을 수 있는 치킨 수)은 쿠폰수와 같기 때문에(포인트 참고) # 몫과 나머지를 더한것은 남은 쿠폰 수를 의미한다. chicken = div + mod
return answer
포인트 : 치킨 한마리당 쿠폰 한개이기 때문에 치킨마리 수 = 쿠폰 수 이다.
즉, chiken을 10으로 나누면 서비스로 받을 수 있는 치킨 마리 수가 나오고 나머지는 남은 쿠폰수가 된다.
```
반응형
'coding test' 카테고리의 다른 글
프로그래머스 k의 개수 (0) | 2023.06.15 |
---|---|
프로그래머스 A로 B만들기 (0) | 2023.06.15 |
프로그래머스 - 특이한 정렬 (0) | 2023.06.15 |
프로그래머스 안전지대 (0) | 2023.06.15 |
유한소수 판별하기 (0) | 2023.06.15 |