https://www.acmicpc.net/problem/10162
문제 요약
3개의 시간 조절용 버튼 a, b, c가 달린 전자레인지에서 시간 t를 입력받아 최소한으로 버튼을 눌러 t 시간을 맞춰야 합니다.
각각의 버튼들에 지정되어 있는 시간은a = 5분b = 1분c = 10초입니다.
문제 풀이
1. t 를 가장작은 버튼인 c와 나눌 수 없으면 리턴합니다. a와 b도 결국 10의 배수이기 때문에 c ( 10 )으로도 안나눠지는거면 기존 버튼으로는 완성할 수 없는 수 입니다.
2. 버튼을 큰 순으로 나눠지면 나눈 횟수를 각각 저장합니다.
3. 나눈 나머지를 t에 다시 저장하여 다음 버튼에서도 적용되게 합니다.
주의할 점
-1이 출력되는 조건을 간략화 할 때 버튼들이 결국 10의 배수라는 점이 중요합니다.
코드
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int t, a = 300, b = 60, c = 10, cnt = 0, aa =0, bb = 0, cc =0;
vector<int> p;
int main()
{
cin >> t;
// 버튼으로 못맞추는 시간이면 리턴
if (t % c != 0)
{
cout << -1;
return 0;
}
if (t >= a)
{
aa = t / a;
t = t % a;
}
if (t >= b)
{
bb = t / b;
t = t % b;
}
if (t >= c)
{
cc = t / c;
t = t % c;
}
cout << aa << " " << bb << " " << cc;
return 0;
}
반응형
예제 1
100
결과 1
예제 2
189
결과 2
'BAEKJOON > Greedy' 카테고리의 다른 글
C++ / 1439 / 뒤집기 ( 그리디 알고리즘 ) (0) | 2024.11.03 |
---|---|
C++ / 1715 / 카드 정렬하기 ( 그리디 알고리즘 ) (0) | 2024.10.30 |
C++ / 1789 / 수 들의 합 ( 그리디 알고리즘 ) (0) | 2024.10.28 |
C++ / 2217 / 로프 ( 그리디 알고리즘 ) (0) | 2024.10.27 |
C++ / 1026 / 보물 ( 그리디 알고리즘 ) (0) | 2024.10.26 |