알고리즘/백준
<백준> 2884번 알람시계 C++ 문제풀이
Han_5ung
2021. 1. 7. 23:14
알람 시계를 기상 시간보다 45분 이르게 설정하는 문제
ex)
9시 ☞ 8시 15분
2시 17분 ☞ 1시 32분
풀이
#include <iostream>
using namespace std;
int main() {
int hour, min;
cin >> hour >> min; //시간, 분 입력
if (min < 45) { //45분보다 작을경우 시간 값에서 1을 빼고
min = min + 15; // 입력한 분에 + 15를 함
hour = hour - 1;
if (hour < 0) // -1 한 시간 값이 0보다 작을 경우 23으로 변경
hour = 23;
}
else {
min = min - 45;
}
cout << hour << " " << min << endl;
}
간단한 수학문제다
기존 시간보다 45분을 일찍 맞춰야 하기 때문에 입력한 분에서 -45 하면 된다.
하지만 45분보다 값이 작을 경우에 분이 -로 내려가는 문제가 생기게 된다.
이를 대비하기 위해 수학식을 이용한다
hour에서 60분을 끌어와 45분을 미리 빼주는 방법을 사용하게 되면
60분 - 45분 = 15분 즉 15분이라는 값이 생기게 된다.
여기서 남은 15분을 처음에 설정하게 된 min에 더하면 시계를 기준으로 한 정상 값을 구할 수 있다.
주의할 점은
시간에는 00 : 00이 존재한다는 것
00시에서 1시간을 빼면 23이 되어야 하기 때문에 if를 추가하여 23으로 바꿔준다.