<2007년>, 1924번
문제
오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
출력
첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.
예제 입력 1 복사
1 1
예제 출력 1 복사
MON
예제 입력 2 복사
3 14
예제 출력 2 복사
WED
예제 입력 3 복사
9 2
예제 출력 3 복사
SUN
예제 입력 4 복사
12 25
예제 출력 4 복사
TUE
풀이
이 문제는 2007년 1월 1일이 월요일이라는 조건과 각 달마다 끝의 날을 주어져서 이를 이용해서 문제를 해결 할 수 있다. 나는 monthmax라는 배열을 선언해서 문제의 주어진 각 달의 마지막 날을 저장한 후에 for문을 돌려서 입력받은 달의 바로 그 전까지의 일 수를 구한 다음에 입력받은 일 수를 더해서 결국 달을 제외하고 총 일 수를 구했다. 그리고 그 일수를 7로 나눈 나머지 값을 구해서 요일을 출력하도록 switch문을 만들어서 문제를 해결했다.
#include <stdio.h>
int main(void)
{
int x, y;
int day = 0;
int monthmax[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
scanf("%d %d", &x, &y);
for (int i = 0; i < x - 1; i++)
day += monthmax[i];
day += y;
day = day % 7;
switch (day)
{
case 0:
printf("SUN");
break;
case 1:
printf("MON");
break;
case 2:
printf("TUE");
break;
case 3:
printf("WED");
break;
case 4:
printf("THU");
break;
case 5:
printf("FRI");
break;
case 6:
printf("SAT");
default:
break;
}
return 0;
}