문제
https://www.acmicpc.net/problem/10162
풀이
최소 횟수를 구해야하므로 큰 단위인 5분(300초)부터 1분(60초), 10초 순서대로 각 단위의 최대 횟수를 구했다.
최소 단위가 10초이므로, 10으로 나누어떨어지지 않으면 -1을 출력하고 return을 이용해 조기반환시켰다.
소스코드
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int T; //조리시간
cin >> T;
int A=0, B=0, C=0; // 버튼. 각각 300, 60, 10초
if(T%10 != 0) {
cout << -1 << endl;
return 0;
}
while(T > 9)
{
if(T >= 300) {
T -= 300;
A++;
} else if (T >= 60) {
T -= 60;
B++;
} else if (T >= 10) {
T -= 10;
C++;
}
}
printf("%d %d %d\n", A, B, C);
return 0;
}
발전
숫자가 크지 않아 뺄셈을 반복했는데, 나눗셈으로 몫을 취하면 더 빠르게 계산될 것 같다.
'Problem Solving' 카테고리의 다른 글
[백준/BOJ] 2592. 대표값 (C++) (0) | 2024.05.22 |
---|---|
[백준/BOJ] 1292. 쉽게 푸는 문제 (C++) (0) | 2024.05.22 |
[백준/BOJ] 5063. Nasty Hacks (C++) (0) | 2024.05.14 |
[백준/BOJ] 5717. Og (C++) (0) | 2024.05.14 |
[백준/BOJ] 10102. Vote Count (C++) (0) | 2024.05.14 |