반응형

문제 : https://www.acmicpc.net/problem/2884

 

풀이

문제의 조건을 if-else로 옮긴다.

만약 m이 45보다 크거나 같다면 45분 뒤로 가더라도 h는 변하지 않으므로 m만 45를 뺀다

m이 45보다 작다면 h는 1빼고 m도 45를 빼야하므로 m은 60+m-45다.(m의 입장에서는 45를 뺐더니 h가 감소되어서 60이 추가된다)

그리고 1을 빼기전 h가 0이라면 1을 뺐을때 -1이 아닌 23이 되어야한다.

 


전체코드(C++14)

#include <iostream>

using namespace std;

int main() {
	int h, m;
	cin >> h >> m;
	if (m >= 45) {
		m -= 45;
	}
	else {
		if (h == 0) h = 23;
		else h--;
		m = 60 + m - 45;
	}
	cout << h << " " << m;
	
}