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
내 풀이는 다음과 같다.
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
int main()
{
int month, day, totalDay = 0;
scanf("%d %d", &month, &day);
for (int i = 1; i < month+1; i++) {
if (i == 3) {
totalDay += 28;
}
else if (i == 5 or i == 7 or i == 10 or i == 12) {
totalDay += 30;
}
else if (i == 2 or i == 4 or i == 6 or i == 8 or i == 9 or i == 11) {
totalDay += 31;
}
}
totalDay += day;
switch (totalDay % 7)
{
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;
default:
break;
}
return 0;
}
그리고 다른 분들의 해결법을 보고 다시 작성한 코드이다.
#define _CRT_SECURE_NO_WARNINGS
//#include <cstdio>
#include <iostream>
int main()
{
int month, day, totalDay = 0;
scanf("%d %d", &month, &day);
totalDay = day;
int dayArray[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
for (int i = 0; i < month - 1; i++) {
totalDay += dayArray[i];
}
//totalDay += day;
switch (totalDay % 7)
{
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;
default:
break;
}
return 0;
}
이런 깔끔한 방법이 있었다니.. 감탄. 더 노력해야겠다.