# 문제
# 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ2720_v2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
/*
* 쿼터(Quarter, $0.25)의 개수,
* 다임(Dime, $0.10)의 개수,
* 니켈(Nickel, $0.05)의 개수,
* 페니(Penny, $0.01)의 개수
*/
int quarter = 25;
int dime = 10;
int nickel = 5;
int penny = 1;
// 테스트케이스 만큼 반복
for (int i = 0; i < T; i++) {
int C = Integer.parseInt(br.readLine()); // 거스름돈
// input을 쿼터, 다임, 니켈, 페니 순으로 나누기
int q = C / quarter;
C %= quarter;
int d = C / dime;
C %= dime;
int n = C / nickel;
C %= nickel;
int p = C / penny;
C %= penny;
System.out.println(q + " " + d + " " + n + " " + p);
}
br.close();
}
}
# 입/출력 결과
# 과정
* 시간 초과해서 while문, if문 사용 안하고 계산
- 입력은 BufferedReader 사용
- int T에 테스트케이스 입력값 받기.
- quarter, dime, nickel, penny 정수로 저장.
- for문 사용하여 T 만큼 반복.
- int C에 거스름돈 입력 받기.
- C를 quarter, dime, nickel, penny 순으로 나눈 값들을 순차적으로 q, d, n, p에 각각 저장.
- q, d, n, p 사이에 공백을 두고 출력.
- BufferedReaer .close() 하기
# 메모
- 처음에 계산을 for문 안에 while문과 if문을 사용해서 코드를 작성했더니 시간 초과가 되어 실패했다.
- 어차피 0까지 계산해야한다면 while문과 if문은 없어도 되겠다 싶어서 생략하고 q, d, n, p에 각각 C를 quarter, dime, nickel, penny 이런 순으로 나누도록 했다.
- 불필요한 코드를 줄이는 건 생각을 많이 하게 만드는 것 같다. 그리고 어디가 불필요한 코드인지를 찾는 것이 어려운 거 같다.
'코딩 테스트' 카테고리의 다른 글
[코딩테스트] 백준 2292번: 벌집 (0) | 2025.07.10 |
---|---|
[코딩테스트] 백준 2903번: 중앙 이동 알고리즘 (0) | 2025.07.01 |
[코딩테스트] 백준 2745번: 진법 변환 2 (0) | 2025.06.28 |
[코딩테스트] 백준 2745번: 진법 변환 (0) | 2025.06.27 |
[코딩테스트] 백준 2563번: 색종이 (0) | 2025.06.26 |