Post

[Programmers] #12901 - 2016년 [Java][C++][Python]

[Programmers] #12901 - 2016년 [Java][C++][Python]

문제 링크


1. 아이디어

2016년 1월 1일이 금요일이며 2016년이 윤년일 때 a월 b일은 무슨 요일인지 구하는 문제다. a월 b일이 그해의 며칠째인지 구한 후 7로 나눈 나머지를 보면 요일을 빠르게 알 수 있다.


2. 복잡도

접근시간공간
풀이$O(A)$$O(1)$

($A$ = 입력값 a)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
    public String solution(int a, int b) {
        int[] days = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int d = 0;
        for (int i = 1; i < a; i++) {
            d += days[i];
        }
        d += b;

        String[] week = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};
        return week[d % 7];
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <bits/stdc++.h>
using namespace std;

int days[1 + 12] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
string week[7] = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};

string solution(int a, int b) {
    int d = 0;
    for (int i = 1; i < a; i++) d += days[i];
    d += b;

    return week[d % 7];
}
1
2
3
4
def solution(a, b):
    days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    week = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]
    return week[(sum(days[: a - 1]) + b) % 7]

This post is licensed under CC BY 4.0 by the author.