https://www.acmicpc.net/problem/1408
1408번: 24
도현이는 Counter Terror Unit (CTU)에서 일하는 특수요원이다. 도현이는 모든 사건을 정확하게 24시간이 되는 순간 해결하는 것으로 유명하다. 도현이는 1시간 만에 범인을 잡을 수 있어도 잡지 않는
www.acmicpc.net
풀이
#include <stdio.h>
int main() {
int ph, pm, ps; // 현재 시분초
int sh, sm, ss; // 시작 시분초
int rh, rm, rs; // 남은 시분초
int ptotal, stotal, rtotal; // 현재, 시작, 남은 합계
// 입력
scanf("%d:%d:%d", &ph, &pm, &ps);
scanf("%d:%d:%d", &sh, &sm, &ss);
// 모두 초로 바꿔 합
ptotal = ph * 3600 + pm * 60 + ps;
stotal = sh * 3600 + sm * 60 + ss;
// 현재 시간이 시작한 시간보다 클때, 시작한 시간합에 24시간을 더해준다
// 그렇게 하지 않으면 나중에 남은 시간값이 음수가 됨.
if (ptotal > stotal) stotal += 24 * 3600;
rtotal = stotal - ptotal; // 남은시간
rh = rtotal / 3600; // 남은 시
rm = (rtotal % 3600) / 60; // 남은 분
rs = (rtotal % 3600) % 60; // 남은 초
printf("%02d:%02d:%02d\n", rh, rm, rs); // XX:XX:XX형태로 출력
return 0;
}
if문의 24시간 더하는것을 쉽게 생각해내지 못했다. 확실히 수학쪽에 약한편이다.
출력파트의
"%02d"는 0으로 띄어쓰기를 하여 2자리를 맞춰 출력하란 뜻이다.( ex) "5" -> "05")
"%2d"를 할 경우 "5"는 " 5"가 된다.
'코딩 > 백준 문제 (브론즈)' 카테고리의 다른 글
[백준/5523/C언어] 경기 결과 _ 풀이 (0) | 2023.08.17 |
---|---|
[백준/5554/C언어] 심부름 가는 길 _ 풀이 (0) | 2023.08.17 |
[백준/10817/C언어] 세 수 _ 풀이 (0) | 2023.08.16 |
[백준/2440/C언어] 별 찍기 - 3 _ 풀이 (0) | 2023.08.16 |
[백준/10987/C언어] 모음의 개수 _ 풀이 (0) | 2023.08.14 |