본문 바로가기

코딩테스트/Baekjoon

(Python 3) 백준 알고리즘 1924 2007년

문제 1924 2007년


문제


오늘은 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중 하나를 출력한다.


예제 입력 1

1 1
cs


예제 출력 1

MON
cs


예제 입력 2

3 14
cs


예제 출력 2

WED
cs


예제 입력 3

9 2
cs


예제 출력 3

SUN
cs


예제 입력 4

12 25
cs


예제 출력 4

TUE
cs



코드


x,y = map(int, input().split())
day = 0
for i in range(1,x):
    if i in [1,3,5,7,8,10,12]:
        day += 31
    elif i in [4,6,9,11]:
        day += 30
    else:
        day += 28
        
dayy = (day+y)%7
 
def f(x): 
    return {0'SUN'1'MON'2'TUE'3'WED'4'THU'5'FRI'6'SAT'}[x]
 
print(f(dayy))
 
cs


코드 설명

x월을 확인한후 1월부터 x-1월까지의 일수를 day에 더하면, 

day에는 우리가 찾을 x월 y일이 일로만 나타낸 값이 저장된다.

day를 y를 추가적으로 더하고 7로 나눈 값의 나머지를 dayy에 저장한다.

1월 1일이 월요일부터 시작하므로 0:일요일, 1:월요일, 2:화요일, 3:수요일, 4:목요일, 5:금요일, 6:토요일이 된다.

나머지 값을 가지고 dictionary를 활용해 switch-case문처럼 만들어주었습니다.



알고리즘 분류

  • 구현



반응형