코딩/백준 문제 (브론즈)

[백준/1408/C언어] 24 _ 풀이

룻밤 2023. 8. 16. 19:13

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"가 된다.