N Log

초를 시, 분, 초로 변환하기

문제

초(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개씩 몇 묶음인지 나누어 구한다.
초는 시간과 분에 사용되지 못하고 남은 것이므로 나머지 연산자로 구한다.