반응형
제가 쓴 풀이
#include <iostream>
using namespace std;
int main()
{
int hour, min;
cin >> hour >> min;
int a;
cin >> a;
if ((min + a % 60) >= 60)
{
cout << (hour + a / 60 + 1) % 24 << " " << (min + a % 60) % 60;
}
else
cout << (hour + a / 60) % 24 << " " << min + a % 60;
return 0;
}
조금 난잡하게 되어 있습니다.
먼저 알고리즘을 푼 방식은 %와 /를 이용해줬습니다. 오븐시계가 만약 1000분 처럼 긴 시간이 될 때를 가정하고 1000분 나누기 60을 해서 시간 단위의 숫자를 더해주고 나머지를 구해주는 %를 통해 분을 구해줍니다.
그런데 여기서 주의해야 할 점이 있습니다. 만약 시간이 23시를 가정할 때 25시처럼 넘어갈 수 있기 때문에 항상 시간에다 % 24를 통해 시간을 유지해주어야 합니다.
이런 식으로 풀어주면 문제를 끝납니다.
향상된 문제 풀이
#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
ios_base::sync_with_stdio(false);
int A, B, C;
cin >> A >> B >> C;
int min = 60 * A + B; // 시 -> 분
min += C;
int hour = (min / 60) % 24;
int minute = min % 60;
cout << hour << " " << minute;
return 0;
}
속도를 향상시켜준 방식입니다.
반응형
'IT 프로그래밍 > 백준' 카테고리의 다른 글
[C++] 백준 10950번 A+B -3 (0) | 2024.03.15 |
---|---|
[C++] 백준 2739번 구구단 (0) | 2024.03.15 |
[c++] 2480 주사위 세개 (0) | 2024.03.14 |
[c++] 백준 2284번 알람시계 (0) | 2024.03.14 |
[백준] 14681번 사분면 고르기 [C++] (0) | 2024.03.06 |