(C++) 백준 1924번 - 2007년

코딩너구리·2025년 10월 6일

코딩 문제 풀이

목록 보기
18/266
post-thumbnail

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

문제

> 오늘은 2007년 1월 1일 월요일이다.
> 2007년 x월 y일은 몇요일인지 구하여라.

접근

각 달의 일 수를 vector에 저장해 놓고 월과 일이 들어오면 전달까지의 모든 일수를 더하고 추가로 들어온 일 수를 더한다.
그 값을 7로 나눠 나온 나머지에 따라 요일을 출력한다.

문제해결

> vector로 각 달의 일 수를 미리 저장한다.
> 월과 일을 입력받고 입력받은 월의 전달까지의 모든 일 수를 더하고 입력받은 일수도 더해준다.
> 각 달은 1일부터 시작하므로 더한 값에 1을 빼준 값의 7로 나누었을때의 나머지를 구한다.
> 0부터 6까지의 경우에 각각 월,화,수,목,금,토,일로 주고 계산결과에 따라 출력한다.
> 1월달인 경우 전달까지의 일 수를 더하는 과정 없이 입력받은 일수에 계산한다.

코드

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	vector<int> Mday = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

	int x, y;
	cin >> x >> y;

	int Totalday = y;
	if (x > 1)
	{
		for (int i = 0; i < x - 1; i++)
		{
			Totalday += Mday[i];
		}
	}

	switch ((Totalday - 1) % 7)
	{
	case 0: cout << "MON" << '\n'; break;
	case 1: cout << "TUE" << '\n'; break;
	case 2: cout << "WED" << '\n'; break;
	case 3: cout << "THU" << '\n'; break;
	case 4: cout << "FRI" << '\n'; break;
	case 5: cout << "SAT" << '\n'; break;
	case 6: cout << "SUN" << '\n'; break;
	default: break;
	}

}

후기

EZ

0개의 댓글