JAVA/프로그래머스 코딩테스트 입문

[프로그래머스, LV.0] 치킨 쿠폰

sundori 2024. 12. 14. 17:31

목차

    문제 설명

    프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.


    제한사항

    • chicken은 정수입니다.
    • 0 ≤ chicken ≤ 1,000,000
    chicken result
    100 11
    1,081 120
    class Solution {
        public int solution(int chicken) {
            int totalService = 0; // 총 서비스 치킨 수
            int coupons = chicken; // 초기 쿠폰 수는 주문한 치킨 수와 동일
    
            while (coupons >= 10) {
                int service = coupons / 10; // 서비스 치킨 수 계산
                totalService += service; // 총 서비스 치킨 수에 추가
                coupons = coupons % 10 + service; // 남은 쿠폰과 새로 얻은 쿠폰 계산
            }
    
            return totalService; // 총 서비스 치킨 수 반환
        }
    }

    코드 동작 설명

    1.초기화:

    int totalService = 0; // 총 서비스 치킨 수
    int coupons = chicken; // 초기 쿠폰 수는 주문한 치킨 수와 동일

     

    • totalService: 총 서비스로 받은 치킨의 개수를 저장.
    • coupons: 현재 보유한 쿠폰 수를 저장. 처음에는 주문한 치킨 수만큼 쿠폰이 있다.

    2.반복문:

    while (coupons >= 10) {
        int service = coupons / 10; // 서비스 치킨 수 계산
        totalService += service; // 총 서비스 치킨 수에 추가
        coupons = coupons % 10 + service; // 남은 쿠폰과 새로 얻은 쿠폰 계산
    }

     

     

    • 조건: coupons가 10개 이상일 때만 서비스 치킨을 받을 수 있으므로, coupons >= 10 동안 반복.
    • 서비스 치킨 계산: coupons / 10은 현재 보유 쿠폰으로 받을 수 있는 서비스 치킨의 수를 의미.
    • 총 서비스 치킨 수 업데이트: totalService에 이번에 받은 서비스 치킨 수를 더함.
    • 쿠폰 업데이트: 현재 보유 쿠폰에서 사용된 쿠폰 수를 제외한 나머지(coupons % 10)와 새로 발급된 쿠폰(service)을 합산.

     

    728x90