BOJ_1924 2007년
- TOC {:toc}
이 글은 백준 온라인 저지의 1924번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2021.04.14
메모리 | 시간 | 코드 길이 |
---|---|---|
34624 KB | 92 ms | 186 B |
from datetime import date
DAY = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
x, y = map(int, input().split())
f = date(2007, x, y)
p = date(2007, 1, 1)
print(DAY[(f - p).days % 7])
아이디어 & 풀이
datetime
라이브러리의 date
를 이용해 기준과 주어진 날짜를 변환해 일 수 차이를 계산한다.
- 파이썬 datetime 날짜 계산 by 어서와 개발은 처음이지
- datetime.date by Python Documentation
일 수 차이를 7로 나눈 나머지에 따라 요일을 출력한다.
- 기준이
MON
이기 때문에MON
으로 시작되는 요일 리스트를 만들면 나머지를 인덱스로 넣었을 때 알맞은 값이 출력된다.
참고 답안
# 풀이 1-1
DAY = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']
x, y = map(int, input().split())
# 현재일 수에
# 각 월에 따른 일 수를 입력된 월까지 더한다.
for i in range(1, x):
if i in [1, 3, 5, 7, 8, 10, 12]:
y += 31
elif i == 2:
y += 28
else:
y += 30
# 총 경과일을 7로 나눈 나머지를 인덱스로 사용한다.
print(DAY[y % 7])
# 풀이 1-2
DAY = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]
# 월별일 수를 리스트로 구성한 뒤
MONTH = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
a, b = map(int, input().split())
# 입력된 월 까지 리스트를 잘라 리스트 원소의 합을 더해 경과일을 구한다.
print(DAY[(sum(MONTH[0:a]) + b) % 7])
# 풀이 1-3
DAY = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]
# 각 월까지 지났을 때 요일이 이동하는 만큼을 리스트로 구성한다.
# e.g, 2월 1일은 목요일이다.
SHIFT = [0, 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5]
a, b = map(int, input().split())
print(DAY[(b + SHIFT[a]) % 7])
아이디어 & 풀이
입력받은 일수와 월에 따른 경과 일을 더해서 계산한다.
- 입력한 일 수도 더하기 때문에 경과 일을 계산한 값은 날짜 차이보다 1만큼 큰 값을 갖는다.
- e.g., 1월 1일까지의 경과일을 구하면 0이 아니라 1이다.
- 그러므로 요일 리스트 구성을
MON
이 인덱스가 1인 위치에 오도록 했다.
-
ps-python