개요
이 글에서는 C++을 사용하여 초(second) 단위의 값을 일(day), 시간(hour), 분(minute), 초(second)로 변환하는 프로그램을 다룹니다.
임의의 초 값이 주어졌을 때, 이를 "며칠 몇 시간 몇 분 몇 초" 형태로 변환하는 것이 목표입니다. 이러한 변환은 타이머, 스케줄러, 로그 처리 등 다양한 프로그래밍 상황에서 유용하게 활용됩니다.
변환 원리
변환은 나눗셈 연산자(/)와 나머지 연산자(%)를 활용하면 간단히 구현할 수 있습니다. 기본 단위는 다음과 같습니다.
- 1일 = 24 × 3600 = 86,400초
- 1시간 = 3,600초
- 1분 = 60초
전체 초를 86,400으로 나눈 몫이 일 수가 되고, 남은 나머지를 다시 3,600으로 나누면 시간, 그 나머지를 60으로 나누면 분, 마지막으로 남은 값이 초가 됩니다.
예제 코드
#include <bits/stdc++.h>
using namespace std;
// 초를 일, 시간, 분, 초 형식으로 변환
void convert_decimal(int n) {
int day = n / (24 * 3600);
n = n % (24 * 3600);
int hour = n / 3600;
n %= 3600;
int minutes = n / 60;
n %= 60;
int seconds = n;
cout << day << " " << "days " << hour
<< " " << "hours " << minutes << " "
<< "minutes " << seconds << " "
<< "seconds " << endl;
}
int main() {
int n = 126700;
convert_decimal(n);
return 0;
}
실행 결과
1 days 11 hours 11 minutes 40 seconds
코드 설명
입력값이 n = 126700초일 때, 변환 과정은 다음과 같이 진행됩니다.
- 일 계산: 126700 ÷ 86400 = 1 → 1일
- 남은 초: 126700 % 86400 = 40300초
- 시간 계산: 40300 ÷ 3600 = 11 → 11시간
- 남은 초: 40300 % 3600 = 700초
- 분 계산: 700 ÷ 60 = 11 → 11분
- 초 계산: 700 % 60 = 40 → 40초
따라서 126700초는 1일 11시간 11분 40초에 해당합니다.
마무리
이처럼 나눗셈과 나머지 연산만으로도 초 단위의 시간을 사람이 읽기 쉬운 형태로 손쉽게 변환할 수 있습니다. 필요에 따라 출력 형식을 바꾸거나, 사용자로부터 직접 초 값을 입력받도록 확장할 수도 있습니다.