작성일 :

문제 링크

1924번 - 2007년

설명

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;
}