C언어 요일 구하기 프로그램


C언어 요일 구하기 프로그램


이번에는 요일 구하기 프로그램을 만들어보자.

2007년 x 월 y 일은 무슨 요일일까?라는 문제가 나왔다.

그럼 어떻게 할 것인가??


1년은 12개월이고 1, 3, 5, 7, 8, 10, 12월은 총 31일까지 있고 4, 5, 9, 11월은 30일, 2월은 28일까지 있다.

요일 구하는 방법은 y = y + x 월까지의 마지막 일수를 해주고 y % 7을 해주면 된다.

요일 구하는 프로그램을 C언어로 나타내 보자.



문제 : 2007년 1월 1일은 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까?


1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
main() {
    int x, y;
    int month[12= { 312831303130313130313031 };
    char *day[7= { "SUN""MON""TUE""WED""THU""FRI""SAT" };
    scanf_s("%d %d"&x, &y);
    for (int i = 0; i < x - 1; i++)
        y += month[i];
    printf("%s", day[y % 7]);
}
cs

< 출력 >


결과는 달력으로 직접 확인해보기로 한다. 소스 설명을 하자면 

month 배열에 월 별로 마지막 일 수를 다 넣어놨다. 그리고 day 포인터 배열에 요일을 출력하게 끔 요일을 다 넣어놨다.

for 문에서 조건값이 x-1인 이유는 i가 0부터 시작하기 때문이다.

그리고 일수 + 마지막 일수를 월 별로 다 더해서 y에 넣어준다.

그리고 요일을 알기 위해서 일주일은 7일 이니 7로 나눠준 나머지 값을 알아내준다.


x 와 y에 값을 넣어서 생각을 해보자. 만약 5월 5일을 입력했다면

for 문은 4번을 돌 것이고 month[4]까지 y에 넣어줄 거다. 그럼 y 값은 125가 된다.

그리고 y를 7로 나눈 나머지 값은 6이 된다 그래서 SAT가 출력이 된다.

간단하다. 코딩에는 정답이 없다. 단, 얼마나 더 빠르고 메모리를 적게 이용하는지에 달려있는 거 같다.

댓글

Designed by JB FACTORY