GitHubSeob

C++ / 프로그래머스 / 2016년 본문

Programmers/Level 1

C++ / 프로그래머스 / 2016년

GitHubSeob 2021. 8. 28.

문제

https://programmers.co.kr/learn/courses/30/lessons/12901

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr

문제풀이

1, 3, 5, 7, 8, 10, 12월은 31일까지,

4, 6, 9, 11월은 30일까지,

윤년이므로 2월은 29일까지 있다.

월과 요일을 나타내는 벡터를 따로 만들면 코드가 더 간결해진다.

월과 일을 입력받으면 1월 1일과 차이나는 일 수를 구하고, 7로 나눈 나머지를 구해 해당하는 요일을 출력한다.

 

코드

#include <string>
#include <vector>

using namespace std;

string solution(int a, int b) {
    vector<int>month = { 31,29,31,30,31,30,31,31,30,31,30,31 };
    vector<string>day = { "FRI","SAT","SUN","MON","TUE","WED","THU" };

    int dday = b - 1;
    for (int idx = 0; idx <= a - 2; ++idx)
        dday += month[idx];

    return day[(dday) % 7];
}