초를 시, 분, 초로 변환하기
문제
초(seconds)를 입력받아 HH:MM:SS 형식으로 변환하시오.
각 값은 최소 2자리로 출력해야 한다.
입력되는 초는 86400을 넘지 않는다고 가정한다.
| 입력 | 출력 |
|---|---|
0 |
00:00:00 |
3661 |
01:01:01 |
86400 |
24:00:00 |
해답
#include <stdio.h>
int main(void)
{
int total_seconds;
scanf("%d", &total_seconds);
int hours = total_seconds / 3600;
int minutes = total_seconds % 3600 / 60;
int seconds = total_seconds % 60;
printf("%02d:%02d:%02d\n", hours, minutes, seconds);
return 0;
}
이 문제는 나머지 연산자(%)와 출력 서식 지정(%02d)을 물어보는 문제이다.
시간은 1초가 3600개 모이면 1시간이므로, 3600개씩 몇 묶음인지 나누어 구한다.
분은 total_seconds에서 시간으로 사용하고 남은 초가 60개씩 몇 묶음인지 나누어 구한다.
초는 시간과 분에 사용되지 못하고 남은 것이므로 나머지 연산자로 구한다.