coding_test/programmers

lv1 / 2016년 / C++

CodeJin 2021. 12. 20. 00:40

https://programmers.co.kr/learn/courses/30/lessons/12901?language=cpp 

 

코딩테스트 연습 - 2016년

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

programmers.co.kr

주어진 날찌의 요일을 반환하는 문제.

 

일, 월, 화 ....., 토요일과 월별로 최대 일수를 배열에 저장한 후에, 1월 1일로부터 며칠이 지났는지 변환하여 월, 일을 일수로 바꾼 후에, 7로 나눈 나머지가 요일이 되므로 이를 출력한다. 이때 1월 1일이 금요일인걸 고려해야한다.

 

#include <string>

using namespace std;

string solution(int a, int b) {
    string answer[7] = {"SUN","MON","TUE","WED","THU","FRI","SAT"};
    int monthDay[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int start = 5 + b - 1;
    for  (int i = 0; i < a-1; ++i)
        start += monthDay[i];
    return answer[start % 7];
}