공부/백준

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

상연 2020. 12. 6. 22:05

목차

    www.acmicpc.net/problem/1924

     

    1924번: 2007년

    첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

    www.acmicpc.net

    코드

    #include <iostream>
    using namespace std;
    
    int main() {
    	int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    	string days[7] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
    	int x, y;
    	cin >> x >> y;
    	for(int i=1; i<x; i++) y += months[i];
    	cout << days[y % 7];
    }

    풀이

    주어진 월 일에 따른 2007년의 요일을 구하는 문제입니다.

    X월 Y일이 주어진다면

    ((X-1)월 까지의 일 + Y) 를 7로 나눈 나머지료 요일을 구해주면 됩니다.

    1월 1일의 경우에는

    ((1-1)월 까지의 일 + 1), 즉 1이고 7로 나눈 나머지가 1일때 "MON" 입니다.

    그러므로 나머지 0~6기준으로 일월화수목금토 가 되겠습니다.