문제
오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
문제 풀이
#include <stdio.h>
#include <string.h>
int main(void)
{
int mon;
int day;
int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int mon_sum = 0;
int i;
scanf("%d %d", &mon, &day);
for (i=0; i<mon-1; i++)
{
mon_sum+=arr[i];
}
mon_sum+=day;
if (mon_sum%7==1)
{
printf("MON");
}
else if (mon_sum%7==2)
{
printf("TUE");
}
else if (mon_sum%7==3)
{
printf("WED");
}
else if (mon_sum%7==4)
{
printf("THU");
}
else if (mon_sum%7==5)
{
printf("FRI");
}
else if (mon_sum%7==6)
{
printf("SAT");
}
else if (mon_sum%7==0)
{
printf("SUN");
}
return 0;
}
- 월별 일수를 리스트에 배열에 담아 인덱스를 통해 월별로 접근할 수 있게 하였다.
- 입력받은 월과 일로 누적된 값을 mon_sum으로 얻었다.
- 해당 값을 7로 나눈 후 요일에 매칭되도록 하였다.
문제 풀이 - 2
switch문을 통한 풀이는 아래와 같다.
#include <stdio.h>
#include <string.h>
int main(void)
{
int mon;
int day;
int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int mon_sum = 0;
int i;
int result;
scanf("%d %d", &mon, &day);
for (i=0; i<mon-1; i++)
{
mon_sum+=arr[i];
}
mon_sum+=day;
result=mon_sum%7;
switch (result)
{
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;
}
'C C++ > C C++ 백준' 카테고리의 다른 글
C언어 백준 10818번 최소, 최대 (0) | 2022.05.21 |
---|---|
C언어 백준 8393번 합 (0) | 2022.05.21 |
C언어 백준 2739번 구구단 (0) | 2022.05.21 |
C언어 백준 2742번 기찍 N (0) | 2022.05.21 |
C언어 백준 2741번 N 찍기 (0) | 2022.05.21 |
댓글