본문 바로가기
C C++/C C++ 백준

C언어 백준 1330번 두 수 비교하기

by Go! Jake 2022. 5. 21.

문제

오늘은 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

댓글