본문 바로가기

백준/JAVA

[Baekjoon/JAVA] 1673번 - 치킨 쿠폰

Baekjoon Online Judge

문제로 이동

 

문제

강민이는 치킨 한 마리를 주문할 수 있는 치킨 쿠폰을 n장 가지고 있다. 이 치킨집에서는 치킨을 한 마리 주문할 때마다 도장을 하나씩 찍어 주는데, 도장을 k개 모으면 치킨 쿠폰 한 장으로 교환할 수 있다.

강민이가 지금 갖고 있는 치킨 쿠폰으로 치킨을 최대 몇 마리나 먹을 수 있는지 구하여라. 단, 치킨을 주문하기 위해서는 반드시 치킨 쿠폰을 갖고 있어야 한다.

 

입력

여러 줄에 걸쳐서 자연수 n과 k가 주어진다.

 

출력

각 입력마다 한 줄에 정답을 출력한다.

 

제한

  • 1 < k ≤ n ≤ 1,000,000,000

 


예제 입력 예제 출력
4 3
10 3
100 5
5
14
124

풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        while (in.hasNextInt()) {
            int n = in.nextInt(); // 치킨 한 마리를 주문할 수 있는 치킨 쿠폰의 수
            int k = in.nextInt(); // 도장을 k개 모으면 치킨 쿠폰 한 장

            int count = 0; // 치킨의 수
            int stamp = 0; // 도장의 수

            while (true) {
                count += n;
                stamp += n;

                n = stamp / k;
                stamp %= k;

                if (n == 0) break;
            }

            // 출력
            System.out.println(count);
        }
    }
}

치킨 쿠폰을 사용한 만큼 도장의 수가 증가하고, 그 도장의 수가 k를 넘어가면 치킨 쿠폰을 하나씩 받는다. 이 과정을 반복해서 count를 증가시키고, 만약 도장을 쿠폰으로 바꾸는 부분을 실행했는데도 쿠폰(n)이 0이면 반복을 종료하고 count를 출력했다.

'백준 > JAVA' 카테고리의 다른 글

[Baekjoon/JAVA] 1718번 - 암호  (1) 2023.01.21
[Baekjoon/JAVA] 1681번 - 줄 세우기  (0) 2023.01.20
[Baekjoon/JAVA] 15829번 - Hashing  (0) 2023.01.18
[Baekjoon/JAVA] 1672번 - DNA 해독  (1) 2023.01.17
[Baekjoon/JAVA] 1668번 - 트로피 진열  (0) 2023.01.16