[프로그래머스][C++] 치킨 쿠폰
치킨 쿠폰
문제 링크
분석
치킨 한 마리당 쿠폰은 한 장 발급됩니다.
쿠폰이 열 장 모이면 치킨을 한마리 서비스로 받을 수 있습니다.
이때, 서비스 치킨에도 쿠폰이 발급됩니다.
위와 같은 규칙으로 매개변수 chicken
만큼 치킨을 시킨다면 받을 수 있는 최대 서비스 치킨의 수를 반환해야합니다.
풀이
int solution(int chicken) {
int answer = 0;
// 치킨을 주문 할 수 있다면 반복
while (chicken / 10)
{
answer += chicken / 10; // 서비스 받은 치킨의 수를 구합니다.
int temp = chicken % 10; // 쿠폰으로 바꾸지 못한 나머지
chicken /= 10; // 쿠폰으로 바꿔 받은 개수
chicken += temp; // 이전에 남은 쿠폰 개수를 다시 더합니다.
}
return answer;
}
성능 요약
시간 복잡도는 $O(log \ n)$입니다.
- 치킨을 주문 할 수 있을 때까지 반복 $O(log_{10} \ n) \approx $O(log \ n)$
공간 복잡도는 고정된 크기의 상수 공간을 사용하기 때문에 $O(1)$입니다.
테스트 성능
테스트 1 〉 통과 (0.01ms, 4.14MB)
테스트 2 〉 통과 (0.01ms, 4.21MB)
테스트 3 〉 통과 (0.01ms, 4.2MB)
테스트 4 〉 통과 (0.01ms, 4.19MB)
테스트 5 〉 통과 (0.01ms, 4.16MB)
테스트 6 〉 통과 (0.01ms, 4.19MB)
테스트 7 〉 통과 (0.01ms, 4.2MB)
테스트 8 〉 통과 (0.01ms, 4.14MB)
테스트 9 〉 통과 (0.01ms, 4.2MB)
테스트 10 〉 통과 (0.01ms, 4.14MB)
댓글남기기