입력으로 ‘시’ ‘분’이 들어오면 45분 이전을 출력하는 문제이다.
예를들어, 10시 10분을 입력받으면 45분 이전인 9시 25분을 출력하는 문제이다.
// 아래의 코드는 dev c++환경에서 동작됩니다.
// visual studio에서는 bit/stdc++.h가 기본적으로 없기 때문에
// 정삭적인 작동이 되지 않을 수 있습니다.
#include <bits/stdc++.h>
using namespace std;
int idx, h, m;
// 시, 분 -> 분
int ToMinute(int hour, int minute)
{
return hour * 60 + minute;
}
// 분 -> 시, 분
void ToHourMinute(int totalMinute, int& hour, int& minute)
{
hour = totalMinute / 60;
minute = totalMinute % 60;
}
// 음수를 예외처리하는 함수
int clampTime(int minute)
{
if(minute < 0)
{
return minute += 60 * 24;
}
return minute;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> h >> m;
int totalMinute = ToMinute(h, m);
ToHourMinute(clampTime(totalMinute - 45), h, m);
cout << h << " "<< m;
return 0;
}
단위를 통일하지 않고 if문으로 모든걸 처리하려니 실수가 잦았었다. 시간 문제뿐 아니라 계산할 땐 단위를 통일하는 것이 여러모로 편한듯하다.