[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.