문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12901

문제

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

입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 “TUE”를 반환하세요.

제한 조건

  • 2016년은 윤년입니다.
  • 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

풀이 과정

month 배열에 금, 토, 일, 월, 화, 수, 목을 담아놓고,
day 배열에 2016년엔 윤년인 것을 고려하여 숫자들을 담아놓는다.

만약 a = 5, b = 24라면 저번 달까지의 일 수를 더하고,
현재 달의 일수에서 하루를 뺀 수를 더하면

7로 나눈 나머지 수로 요일을 판별할 수 있다.

#include <string>
#include <vector>

using namespace std;

string solution(int a, int b) {
    string answer = "";
    string month[7] = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
    int day[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    int sum = 0;
    for(int i = 0; i < a - 1; i++){
        sum += day[i];
    }
    sum += b - 1;
    answer = month[sum % 7];
    return answer;
}

댓글남기기