1924번: 2007년
첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
www.acmicpc.net
✏️ 내가 작성한 코드
import sys
x,y = map(int,sys.stdin.readline().strip().split())
mon = [31,28,31,30,31,30,31,31,30,31,30,31] # 1월부터 각 월의 마지막 날짜를 리스트에 담는다.
week = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']
totalDay = 0
for i in range(x-1):
totalDay += mon[i]
totalDay = totalDay + y
print(week[totalDay%7])
✏️ 참고
1월1일은 월요일.
1월2일은 화요일
1월3일은 수요일
...
1월7일은 일요일
x월y일은 ○요일
→ y 나누기 7을 했을 때 나머지 값으로 요일을 알 수 있다.
나머지가 1일때 월요일, 2일때 화요일 , 3일때 수요일 , ..., 0일때 일요일 이다.
1월은 이렇게 나머지로 확인할 수 있다 그렇다면 2월부터는 나머지 값이 달라질텐데 그럼 어떻게 해야할까?
(ex. 2월1일에서 1일이니까 나머지가 1인데 요일은 목요일이다.)
→ 요일,날짜는 계속 '이어지는' 존재이므로 '합쳐서' 생각해야한다.
2월1일의 요일을 구해보자.
2월1일은 1월32일과 같다.(32일은 없는 일자지만 이어지는 존재로 생각해본다면..)
32나누기7의 나머지는 4로 목요일인 것을 확인할 수 있다.
→ 따라서 x월y일의 요일을 구하려면
(1) x-1월까지의 날짜를 모두 합하고(mon리스트 활용)
(2) 거기에 y일을 더해서 totalDay 변수에 넣고
(3) 나누기 7을 해서 나머지를 구한 다음 week 배열에서 요일을 구하면 된다.
'백준' 카테고리의 다른 글
[백준][python] 4659 비밀번호 발음하기 문제 (1) | 2023.10.11 |
---|---|
[백준][python] 2869 달팽이는 올라가고 싶다 문제 (0) | 2023.10.09 |
[백준][python] 2164 카드2 문제 (0) | 2023.08.11 |
[백준][python] 1181 단어 정렬 문제 (0) | 2023.08.01 |
[백준][python] 10817 세 수 문제 (0) | 2023.07.25 |