프로그래밍/백준

[알고리즘] 백준 1924 파이썬 - 2007년

매 석 2022. 12. 30. 12:49
반응형

 

 

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

문제

오늘은 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일까지 있다.

 

 

문제풀이

#01
A=["MON","TUE","WED","THU","FRI",'SAT',"SUN"]
#02
B=[0,31,59,90,120,151,181,212,243,273,304,334]
a,b=map(int,input().split())
#03
tmp=B[a-1]+b
print(A[tmp%7-1])

- #01 : 1월1은 MON부터 시작이니, A리스트에 MON부터 SUN까지 순서대로 저장해준다.

- #02 : a를 입력받았을 때 그 전 달까지의 누적 일수를 구하기 위한 리스트이다.

           즉 a가 1이면 0, a가 2이면 1월달 누적 31일, a가 3이면 1,2월달 누적 59일이다.

- #03 : tmp에는 a월 b일까지의 누적일수를 저장한다. 즉 a월 전까지의 일수와 b일을 더한다.

           즉 B[a-1]+b를 통해 누적일수를 구한다.

           이후 누적일수를 7로 나눈 나머지에서 1을 빼주면 그 날의 요일을 구할 수 있다.