이 문제는 단순구현문제로 굉장히 단순합니다. 특히 연도도 주어져서 윤년의 경우를 생각하지 않기 때문에 월 단위의 날짜를 고려해서 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 0printf("SUN"); break;
    case 1printf("MON"); break;
    case 2printf("TUE"); break;
    case 3printf("WED"); break;
    case 4printf("THU"); break;
    case 5printf("FRI"); break;
    case 6printf("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

+ Recent posts