치킨 쿠폰

문제 링크

치킨 쿠폰

분석

치킨 한 마리당 쿠폰은 한 장 발급됩니다.

쿠폰이 열 장 모이면 치킨을 한마리 서비스로 받을 수 있습니다.
이때, 서비스 치킨에도 쿠폰이 발급됩니다.

위와 같은 규칙으로 매개변수 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)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기