백준 온라인 저지 / 5575번 타임카드
https://www.acmicpc.net/problem/5575
- 사용언어 : C (C99)
- 알고리즘 : 수학, 구현, 사칙연산
C 코드
1. 문제 정리
6 * 3 총 18개 입력을 받아서 계산하는 문제이다.
일단 C로 할려하니 입력 받는 것 부터 헷갈렸는데.. 사실 이거 말고 다른 방법이 있을 것 같지만 C#처럼
그냥 배열로 받아오는 방식으로 해결 했다.
(C#에서는 배열 아니고 그냥 써도되는데 뭔가 ide에서 자꾸 출력을 해대서;;)
계산을 전부 초로 환산한 후 계산하고 다시 시/분/초로 만들어주는 공식을 사용했다.
2. 공식
딱히 어려울 것도 없다
t1 = h1 * 3600 + m1 * 60 + s1;
t2 = h2 * 3600 + m2 * 60 + s2;
T = t2 - t1;
H[i] = T / 60 / 60 % 24;
M[i] = T / 60 % 60;
S[i] = T % 60;
t1 t2로 앞에 받은 3개 값을 초로 그리고 t2로 뒤에 받은 값을 초로 받아 온 후 다시 환산해주었다.
3. 완성 코드
#include <stdio.h>
int main(void)
{
int h1, m1, s1, h2, m2, s2;
int T, t1, t2;
int H[3], M[3], S[3];
for (int i = 0; i < 3; i++) {
scanf("%d %d %d %d %d %d", &h1, &m1, &s1, &h2, &m2, &s2);
t1 = h1 * 3600 + m1 * 60 + s1;
t2 = h2 * 3600 + m2 * 60 + s2;
T = t2 - t1;
H[i] = T / 60 / 60 % 24;
M[i] = T / 60 % 60;
S[i] = T % 60;
}
printf("%d %d %d\n%d %d %d\n%d %d %d\n", H[0], M[0], S[0], H[1], M[1], S[1], H[2], M[2], S[2]);
}
'백준 알고리즘 > Lang-C | C++' 카테고리의 다른 글
[백준/C] 10039번 평균점수 (0) | 2021.08.20 |
---|---|
[백준/C] 5596번 시험 점수 (0) | 2021.08.19 |
[백준/C] 5543번 상근날드 (0) | 2021.08.17 |
[백준/C] 5532번 방학 숙제 (0) | 2021.08.17 |
[백준/C] 4299번 AFC 웜블던 (0) | 2021.08.17 |