안녕하세요. 오늘은 시계를 돌릴거예요.

문제

https://www.acmicpc.net/problem/12840

아이디어

a,b,c를 입력받아서 x를 더하고 빼야합니다.
그런데 x를 더하는건 쉬운데 빼면 c가 음수가 될 수 있어서 복잡해집니다.
그래서 x를 빼는데 며칠씩 더해줄겁니다. 즉 c+=24 x 60 x 60 x 1000 - x라고 둘겁니다. 그러면 며칠이 지나있기 때문에 시간은 정확하지만 음수는 되지 않습니다.
출력할 때에는 초에서 분으로, 분에서 시간으로, 시간에서 버리는 작업을 해주면 됩니다.

소스코드

#include <iostream>
using namespace std;

int main(void)
{
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	long long a, b, c, N, T, x;
	cin >> a >> b >> c;
	cin >> N;
	while (N--)
	{
		cin >> T;
		if (T == 1)
		{
			cin >> x;
			c += x;
		}
		else if (T == 2)
		{
			cin >> x;
			c += 24 * 60 * 60 * 1000 - x; //절대 c를 음수로 만들지 않겠다는 불굴의 의지
		}
		else
		{
			b += c / 60;
			c %= 60;
			a += b / 60;
			b %= 60;
			a %= 24;
			cout << a << ' ' << b << ' ' << c << "\n";
		}
	}
}


감사합니다.

0개의 댓글