학습 정리/👨‍💻 PS Study

[C] 백준 1924번 - 2007년

무딘붓 2022. 7. 6. 22:50

https://www.acmicpc.net/problem/1924

 

1924번: 2007년

첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

www.acmicpc.net

(21.08.04)

1924번: 2007년 - C언어 풀이

[문제]

오늘은 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일까지 있다.

1 1
3 14
9 2
12 25

[출력]

첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.

MON
WED
SUN
TUE

[소스코드]

 

#include <stdio.h>
// [baekjoon] 1924번 - 2007년

int main() {

	int a, b;
	scanf("%d %d", &a, &b);

	int d = 0;

	switch (a) {
	case 12:
		d += 30;
	case 11:
		d += 31;
	case 10:
		d += 30;
	case 9:
		d += 31;
	case 8:
		d += 31;
	case 7:
		d += 30;
	case 6:
		d += 31;
	case 5:
		d += 30;
	case 4:
		d += 31;
	case 3:
		d += 28;
	case 2:
		d += 31;
	case 1:
		break;
	}

	d += b;
	d %= 7;

	switch (d) {
	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;
	}

}

 

case 문을 이용하여 무식하게 해결.

더 효율적으로 풀이할 수 있는지 공부해 봐야겠다.