728x90
반응형
던질 시간과 현재 시간의 차를 구하는 문제. 어렵지 않게 풀 수 있었다만, 적어도 1초, 많아야 24시간을 기다린다는 조건 때문에 조금 헤맸다.
예를 들어,
input =>
08:00:00
08:00:00
answer =>
24:00:00
wrong answer =>
00:00:00
1초 이상을 기다려야 하므로 24시간을 기다려야 하는데, 코드로는 0초를 기다리게 나온 것이다.
h, m, s 모두 0이라면 24시간을 출력해주는 것으로 해결했다.
이것 때문에 30분을 진땀을 뺐다 ㅠ_ㅠ!!!!!
int ch, cm, cs; // current time
int wh, wm, ws; // wait time
int h = 0, m = 0, s = 0; // answer
scanf_s("%d:%d:%d %d:%d:%d", &ch, &cm, &cs, &wh, &wm, &ws);
s = (ws - cs);
if (s < 0)
{
// 받아내림
s += 60;
cm++;
}
m = (wm - cm);
if (m < 0)
{
// 받아내림
m += 60;
ch++;
}
h = wh - ch;
if (h < 0)
h += 24;
// 1초 이상 기다려야 하므로 24시간 기다림
if (h == 0 && m == 0 && s == 0)
{
h = 24;
}
printf("%02d:%02d:%02d", h, m, s);
간단하게 구현해봤다.
조건의 중요성을 다시 상기시켜주었던 문제.
728x90
반응형
'알고리즘 문제풀이 > 문자열' 카테고리의 다른 글
[백준][C++] 17609 회문 (0) | 2022.11.04 |
---|---|
[백준][C++] 9342 염색체 (0) | 2022.11.04 |
[백준][C++] 16171. 나는 친구가 적다 (Small) (0) | 2022.11.04 |
[백준][C++] 4659. 비밀번호 발음하기 (0) | 2022.11.04 |
[백준][C++] 9046 복호화 (0) | 2022.11.04 |