C언어 요일 구하기 프로그램
- 프로그래밍/C/C++
- 2018. 7. 12.
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] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 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가 출력이 된다.
간단하다. 코딩에는 정답이 없다. 단, 얼마나 더 빠르고 메모리를 적게 이용하는지에 달려있는 거 같다.