티스토리 뷰
백준 1924번 2007년
알고리즘 분류: 구현
링크: www.acmicpc.net/problem/1924
문제
오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
출력
첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.
문제 파악
2007년 1월 1일이 월요일이라는 기준으로 몇월 몇일에 무슨 요일인지를 맞추면 되는 문제이다.
31일 까지 있는 달은 1, 3, 5, 7, 8, 10, 12월
30일 까지 있는 달은 4, 6, 9, 11월
28일 까지 있는 달은 2월이다.
코드
# 1924번
x, y = map(int, input().split())
big_month = [1, 3, 5, 7, 8, 10, 12]
normal_month = [4, 6, 9, 11]
small_month = [2]
day = 0
for i in range(1, x):
if i in big_month:
day += 31
elif i in normal_month:
day += 30
elif i in small_month:
day += 28
day += y
if day % 7 == 1:
print("MON")
elif day % 7 == 2:
print("TUE")
elif day % 7 == 3:
print("WED")
elif day % 7 == 4:
print("THU")
elif day % 7 == 5:
print("FRI")
elif day % 7 == 6:
print("SAT")
elif day % 7 == 0:
print("SUN")
1월 1일이 월요일이라고 주어졌기 때문에 7로 나누었을 때 1이 남는 경우를 월요일로 한다.
31일이 있는달, 30일이 있는달, 28일이 있는 달을 알고 있기 때문에 주어지는 x, y값을
다 더해서 계산하고 7로 나누어서 나머지로 요일을 맞추는 코드이다.
# 1924번
import calendar
day_list = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
x, y = map(int, input().split())
day = calendar.weekday(2007, x, y)
print(day_list[day])
파이썬의 calendar 모듈을 이용해서 푸는 방법이다.
calendar 모듈의 weekday 메소드는 년, 월, 일을 파라미터로 받아서 요일 정보를 리턴한다.
월요일부터 0, 화요일 1, ... , 일요일 6이다.
이를 이용하면 훨씬 짧고 간결하게 코드를 작성할 수 있다.
'Python 알고리즘' 카테고리의 다른 글
백준 9012번 파이썬 풀이: 괄호 (0) | 2020.11.18 |
---|---|
백준 10828번 파이썬 풀이: 스택 (0) | 2020.11.18 |
백준 1120번 파이썬 풀이: 문자열 (0) | 2020.09.26 |
백준 13015번 파이썬 풀이: 별 찍기 - 23 (0) | 2020.09.24 |
백준 17828번 파이썬 풀이: 문자열 화폐 (0) | 2020.09.20 |