티스토리 뷰

알고리즘(C++)/백준 알고리즘

1924번 : 2007년

개발하는꼬물이 2017. 11. 17. 19:59

1. 문제 요약

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

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


2. 예제 입력

1 1


3. 예제 출력

MON


4. 코드

#include <iostream>
#include <string>
using namespace std;

int main()
{
	string day[7] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
	int month[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	int x, y;
	int count = 0;

	cin >> x >> y;  // 월, 일 입력

	if (x > 12 || x < 1 || y < 1 || y > 31)
		return 0;
	
	for (int i = 0; i < x; i++)  // 1월~x월까지 반복
	{
		if ((i + 1) == x)  // 입력한 월이 i + 1과 같다면
		{
			count += y;  // 날짜를 더해줌
		}
		else  // 아니면
		{
			count += month[i];  // 한 달의 일수를 더해줌
		}
	}
	
	cout << day[count % 7] << endl;  // 합한 모든 날을 일주일로 나누어 요일을 구함 

	return 0;
}


'알고리즘(C++) > 백준 알고리즘' 카테고리의 다른 글

11720번 : 숫자의 합  (0) 2017.11.17
8393번 : 합  (0) 2017.11.17
2441번 : 별찍기 -4  (0) 2017.11.17
2440번 : 별찍기 -3  (0) 2017.11.17
2439번 : 별찍기 -2  (0) 2017.11.17
댓글