안녕하세요. 오늘은 시계를 돌릴거예요.
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";
}
}
}
감사합니다.