[백준 1924] 2007년 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
2007년을 기준으로 특정 날짜가 무슨 요일인지 계산하는 구현 문제입니다.
- 2007년 1월 1일은 월요일(
MON
)입니다. - 입력으로 월과 일이 주어졌을 때, 해당 날짜가 무슨 요일인지 출력해야 합니다.
- 윤년이 아닌 2007년의 달력 구조에 맞춰 각 달의 날짜 수를 고려해야 합니다.
접근법
- 1월 1일부터 입력된 날짜까지 며칠이 지났는지를 누적하여 계산합니다.
- 총 일수를
7
로 나눈 나머지를 통해 요일 인덱스를 구할 수 있습니다. - 각 요일은
MON
,TUE
,WED
, …,SUN
순으로 순환되며 인덱스를 기반으로 매핑합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
class Program {
static void Main() {
var input = Console.ReadLine().Split();
int month = int.Parse(input[0]);
int day = int.Parse(input[1]);
int[] daysInMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
string[] week = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
int totalDays = 0;
for (int i = 0; i < month - 1; i++)
totalDays += daysInMonth[i];
totalDays += day;
Console.WriteLine(week[totalDays % 7]);
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef vector<string> vs;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int month, day; cin >> month >> day;
vi daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
vs week = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
int totalDays = 0;
for (int i = 0; i < month - 1; i++)
totalDays += daysInMonth[i];
totalDays += day;
cout << week[totalDays % 7] << "\n";
return 0;
}