728x90
문제 링크
문제 요약
- 거스름돈을 최소 동전 개수로 거슬러주기 위해 Quarter($0.25), Dime($0.10), Nickel($0.05), Penny($0.01)의 개수를 구하는 문제
- 큰 단위부터 최대한 많이 사용하는 그리디 알고리즘 적용
접근 방법
- 그리디 알고리즘: 큰 단위의 동전부터 최대한 많이 사용
- Quarter(25센트) → Dime(10센트) → Nickel(5센트) → Penny(1센트) 순서로 나눗셈과 나머지 연산
- 각 단계에서 해당 동전의 개수를 구하고, 남은 금액을 다음 단계로 전달
풀이 코드
#include <iostream>
#include <string>
#include <vector>
int main() {
int T(0);
const int quarters = 25;
const int dimes = 10;
const int nickels = 5;
const int pennies = 1;
std::cin >> T;
for(int i(0); i < T; i++) {
int C(0);
std::cin >> C;
int numQuarters = C / quarters;
C %= quarters;
int numDimes = C / dimes;
C %= dimes;
int numNickels = C / nickels;
C %= nickels;
int numPennies = C / pennies;
C %= pennies;
std::cout << numQuarters << " " << numDimes << " " << numNickels << " " << numPennies << "\n";
}
return 0;
}
시간/공간 복잡도
- 시간: O(T) - T개의 테스트 케이스에 대해 상수 시간 연산
- 공간: O(1) - 고정된 변수만 사용
728x90
'코딩테스트' 카테고리의 다른 글
| [BOJ 1193] 분수찾기 - 수학 (0) | 2025.12.11 |
|---|---|
| [BOJ 2292] 벌집 - 수학 (0) | 2025.12.10 |
| [BOJ 2903] 중앙 이동 알고리즘 - 수학 (0) | 2025.12.09 |
| [BOJ 11005] 진법 변환 2 - 수학 (0) | 2025.12.07 |