프로그래머스 치킨 쿠폰

KIMYEONGJUN·2026년 9월 18일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

Main147 main = new Main147();
클래스의 기능을 사용하기 위해 객체를 생성하는 코드이다.
int result1 = main.solution(100);
solution 메서드에 100을 넣고 결과를 계산한 뒤 변수에 저장한다.
System.out.println(result1);
계산된 결과값을 콘솔창에 출력한다.
int answer = 0;
우리가 최종적으로 얻게 되는 서비스 치킨의 총 마릿수를 저장하고 누적할 변수이다.
int coupons = chicken;
현재 가지고 있는 쿠폰의 개수이며, 처음 시작할 때는 주문한 치킨의 수와 같다.
while (coupons >= 10)
쿠폰이 10장 이상 남아 있는 동안만 계속해서 서비스를 받을 수 있도록 반복문을 실행한다.
int service = coupons / 10;
현재 가진 쿠폰을 10으로 나누어 이번에 받을 수 있는 서비스 치킨의 마릿수를 계산한다.
answer += service;
지금까지 받은 총 서비스 치킨 수에 방금 구한 서비스 마릿수를 더해서 누적한다.
coupons = service + (coupons % 10);
다음 반복을 위해 쿠폰을 새롭게 갱신한다.
서비스 치킨이 새로 준 쿠폰(service)과 10장 미만으로 남은 나머지 쿠폰(coupons % 10)을 합쳐서 다음 바퀴에 사용한다.
return answer;
쿠폰이 10장 미만이 되어 반복문이 종료된 후, 최종적으로 완성된 서비스 치킨의 총 마릿수를 반환한다.

코드로 구현

class Solution {
    public int solution(int chicken) {
        int answer = 0;
        int coupons = chicken;
        while (coupons >= 10) {
            int service = coupons / 10; 
            answer += service;
            coupons = service + (coupons % 10);
        }

        return answer;
    }
}

프로그래머스 코드

package programmers.programmers2;

// 프로그래머스 치킨 쿠폰
public class Main147 {
    public static void main(String[] args) {
        Main147 main = new Main147();

        // 테스트 케이스 실행 및 결과 출력
        int result1 = main.solution(100);
        int result2 = main.solution(1081);

        System.out.println(result1);
        System.out.println(result2);
    }

    public int solution(int chicken) {
        int answer = 0;
        int coupons = chicken;

        while (coupons >= 10) {
            int service = coupons / 10;
            answer += service;
            coupons = service + (coupons % 10);
        }

        return answer;
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글