[백준/JAVA]1673번 치킨 쿠폰

정은아·2025년 2월 18일

[알고리즘] 수학 모음

목록 보기
146/152
post-thumbnail

문제

백준 1673번 치킨 쿠폰 JAVA

내 풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        // 1. 치킨 쿠폰 n장 + 쿠폰 k개당 쿠폰 1장으로 교환
        // Q. 강민이가 지금 가지고 있는 쿠폰으로 최대 몇 마리의 치킨을 먹나?

        // 4 3 > 5 > 쿠폰 4개  > 도장 4개 > 5마리
        // 10 3 > 14 > 10마리 >> 3마리 + 1장 >> 1마리 >> 14마리
        // 100 5 > 124 > 100마리 + 쿠폰 25장 >> 20마리 >> 4마리 >> 124마리


        String str = "";
        while ((str = br.readLine()) != null && !str.isEmpty()){
            StringTokenizer st = new StringTokenizer(str);
            int coupon = Integer.parseInt(st.nextToken());
            int stamp = Integer.parseInt(st.nextToken());
            int couponPlus = coupon;
            int answer = coupon;

            while (couponPlus >= stamp){
                answer += couponPlus / stamp;
                couponPlus = (couponPlus/stamp) + (couponPlus % stamp);
            }

            sb.append(answer).append("\n");
        }
        System.out.println(sb.toString());
    }
}

느낀점

초반, 이 문제를 풀 때에는 StringTokenizer를 처음에 입력받고 while 조건으로
st.hasMoreTokens()를 입력받으려고 했으나, 첫 줄만 입력받아지는 문제가 생겼다.

이 문제를 해결하기 위해 위 코드처럼 String으로 먼저 한 줄씩 입력 받은 뒤 while문 안에서 StringTokenizer()를 선언하는 식으로 해결하느라 시간이 좀 걸렸다.
그럼에도 예제를 입력한 뒤에 엔터를 한 번 더 쳐야 답이 나오는데
이건 EOF어쩌고 하는데 잘 모르겠다.
몇 개의 테스트케이스를 주지 않고 여러개 라고 명시하는 문제는 좀 별로다

그리고 이렇게 퍼주기 식으로 장사하면 인심좋다고 소문은 날지언정
이렇게 고물가 시대에 과연 사장님이 마진이 얼마가 남을지도 의심이 든다.

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글