치킨 쿠폰
Last updated
Last updated
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken
이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
제한사항
chicken
은 정수입니다.
0 ≤ chicken
≤ 1,000,000
입출력 예
chicken | result |
---|---|
입출력 예 설명
입출력 예 #1
100마리를 주문하면 쿠폰이 100장 발급되므로 서비스 치킨 10마리를 주문할 수 있습니다.
10마리를 주문하면 쿠폰이 10장 발급되므로 서비스 치킨 1마리를 주문할 수 있습니다.
따라서 10 + 1 = 11 을 return합니다.
입출력 예 #2
1081마리를 주문하면 쿠폰이 1081장 발급되므로 서비스 치킨 108마리를 주문할 수 있습니다. 그리고 쿠폰이 1장 남습니다.
108마리를 주문하면 쿠폰이 108장 발급되므로 서비스 치킨 10마리를 주문할 수 있습니다. 그리고 쿠폰이 8장 남습니다.
10마리를 주문하면 쿠폰이 10장 발급되므로 서비스 치킨 1마리를 주문할 수 있습니다.
1마리를 주문하면 쿠폰이 1장 발급됩니다.
가지고 있는 쿠폰이 총 10장이므로 서비스 치킨 1마리를 추가로 주문할 수 있습니다.
따라서 108 + 10 + 1 + 1 = 120 을 return합니다.
주문 → 쿠폰발급 → 발급된 쿠폰 수에서 주문 가능한 치킨 수 주문 → 주문 이것의 반복을 하다가 c < 1 일 때 남은 쿠폰수에서 서비스 치킨을 추가로 더해주는 것으로 생각했다.
처음에 이렇게 풀었다가 테스트케이스 9번에서 막혀서 다른 반례를 참고하여서 다시 풀어야했다.
다시 보니 발급된 쿠폰 + 남은 쿠폰까지 고려해서 주문을 해주어야 했다. 지문의 예시만 읽고 해당 흐름대로 짜다가 반례를 생각하지 못했다.
1999마리 → 222마리
1999마리, 쿠폰 1999장 치킨 199마리, 쿠폰 9장 남음 (쿠폰 208장) 치킨 20마리, 쿠폰 8장 남음 (쿠폰 28장) 치킨 2마리, 쿠폰 8장 남음 (쿠폰 10장) 치킨 1마리, 쿠폰 없음 서비스 치킨 = 199 + 20 + 2 + 1 result = 222
100
11
1,081
120