이 문제는 단순구현문제로 굉장히 단순합니다. 특히 연도도 주어져서 윤년의 경우를 생각하지 않기 때문에 월 단위의 날짜를 고려해서 month와 day를 입력 받을 때 1월부터 month월까지의 날짜를 모두 더하고 7로 나눈 나머지와 month월의 day일을 7로 나눈 나머지를 더해서 0~6을 일,월,화,수,목,금,토로 치환해서 원하는 값을 출력하면 됩니다.
sum = (1월~month월까지의 일수를 모두 더한 값)%7 + day%7
이 식을 인수분해해서
sum = (1월~month월까지의 일수를 모두 더한 값+day)%7
로 간단하게 써도 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
#include <stdio.h>
int main() {
int x, y, w=0,i,sum=0;
scanf("%d %d",&x,&y);
for (i = 1; i < x; i++) {
if (i == 2) sum += 28;
else if (i == 4 || i == 6 || i == 9 || i == 11) sum += 30;
else sum += 31;
}
w += (sum + y) % 7;
switch (w) {
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"); break;
}
return 0;
} |
cs |
(x,y는 월,일 입력값이고 w는 0~6까지 요일 치환 변수, i는 x월 전까지의 월, sum은 x월 전까지의 일 수의 총합)
'Baekjoon online judge 문제 풀이' 카테고리의 다른 글
[BOJ 14647번] 준오는 조류혐오야!! (0) | 2018.05.01 |
---|---|
[BOJ 9012번] 괄호 (0) | 2018.03.29 |
[BOJ 10828번] 스택 (0) | 2018.02.22 |
[BOJ 11727번] 2*n 타일링2 (0) | 2018.02.22 |
[BOJ 1004번] 어린 왕자 (0) | 2018.02.07 |