백준 문제 풀이 - 2007년 1924번

Joonyeol Sim👨‍🎓·2022년 2월 21일
0

백준문제풀이

목록 보기
93/128

📜 문제 이해하기

오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

💡 문제 재정의

2007년 n월 m일의 요일을 출력하라

✏️ 계획 수립

우선 2007년의 월별로 총 day수를 배열로 가진다.
그 후 한 주의 요일을 배열로 가지고 아래 연산을 진행한다.
1. 1월 1일부터 전월까지의 일수의 합을 더한다.
2. 현재월 현재일까지의 일수를 더한다.
3. 계산한 값을 7로 나눈 나머지의 배열값을 출력한다.

3월 14일을 예로 해보자.
1. 1월의 31일과 2월의 28일을 더하면 59일이다.
2. 59일에 14일을 더하고 1월 1일의 1을 빼기위해 1값을 빼준다. 59+14-1 = 72
3. 72 % 7 = 2
즉, WED가 답이 된다.

💻 계획 수행

#include <bits/stdc++.h>

using namespace std;

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

    vector<int> day_list = {31,28,31,30,31,30,31,31,30,31,30,31};
    vector<string> week = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
    int month, day;
    int day_sum = 0;
    cin >> month >> day;

    for (int i=0; i<month-1; i++)
        day_sum += day_list[i];
    day_sum += day - 1;

    cout << week[day_sum % 7];
}

🤔 회고

날짜를 계산하는 테크닉이 있다면 최대 12번 반복 내에 풀 수 있는 문제이다.

profile
https://github.com/joonyeolsim

0개의 댓글