프로그래밍을 하다 보면 총 일수를 년, 주, 일 단위로 나누어 표현해야 하는 경우가 종종 있습니다. 이번 글에서는 C 언어를 사용해 주어진 일수를 년(year), 주(week), 일(day)로 변환하는 방법을 알아보겠습니다.
계산의 편의를 위해 한 해는 365일이라고 가정합니다(윤년은 고려하지 않음). 변환 공식은 다음과 같습니다.
변환 공식
1. 년 수 계산
년 수 = 총 일수 / 365
총 일수를 365로 나눈 몫이 바로 년 수가 됩니다.
2. 주 수 계산
주 수 = (총 일수 % 365) / 7
총 일수를 365로 나눈 나머지를 구한 뒤, 그 값을 일주일인 7로 다시 나눈 몫이 주 수입니다.
3. 일 수 계산
일 수 = (총 일수 % 365) % 7
365로 나눈 나머지를 다시 7로 나눴을 때의 나머지가 마지막으로 남는 일 수입니다.
입력 및 출력 예시
입력: days = 209
출력: years = 0
weeks = 29
days = 6
입력: days = 1000
출력: years = 2
weeks = 38
days = 4예를 들어 1000일은 2년, 38주, 4일에 해당한다는 것을 확인할 수 있습니다.
알고리즘
Start
Step 1 -> 일주일의 일수를 나타내는 매크로 선언: const int n = 7
Step 2 -> 일수를 년, 주, 일로 변환하는 함수 선언
void find(int total_days)
변수 선언: int year, weeks, days
year = total_days / 365 대입
weeks = (total_days % 365) / n 대입
days = (total_days % 365) % n 대입
year, weeks, days 출력
Step 3 -> main() 함수에서
int Total_days = 209 선언
find(Total_days) 호출
StopC 코드 구현
#include <stdio.h>
const int n = 7;
// 년, 주, 일 계산 함수
void find(int total_days) {
int year, weeks, days;
// 윤년이 아닌 것으로 가정
year = total_days / 365;
weeks = (total_days % 365) / n;
days = (total_days % 365) % n;
printf("years = %d", year);
printf("\nweeks = %d", weeks);
printf("\ndays = %d ", days);
}
int main() {
int Total_days = 209;
find(Total_days);
return 0;
}실행 결과
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 출력됩니다.
years = 0 weeks = 29 days = 6
209일을 입력했을 때 0년 29주 6일로 정확하게 변환되는 것을 확인할 수 있습니다. 이처럼 나눗셈 연산자(/)와 나머지 연산자(%)만 활용하면 간단하게 일수를 년, 주, 일 단위로 변환할 수 있습니다.