
문제
백준 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어쩌고 하는데 잘 모르겠다.
몇 개의 테스트케이스를 주지 않고 여러개 라고 명시하는 문제는 좀 별로다
그리고 이렇게 퍼주기 식으로 장사하면 인심좋다고 소문은 날지언정
이렇게 고물가 시대에 과연 사장님이 마진이 얼마가 남을지도 의심이 든다.