https://www.acmicpc.net/problem/1924
-- 오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
-- 첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다.
-- (조건1) 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
예전에 어딘가에서 본 적 있는 유형 이었음,
날짜를 7로 나눠서 나머지 값을 기준으로 요일을 알아내기
1일이 월요일이니까, 나머지가 1이면 월, 2면 화, 3이면 수... 임을 먼저 알 수 있음
때문에 if문 먼저 설정
r = days % 7
if r == 1:
print("MON")
elif r == 2:
print("TUE")
elif r == 3:
print("WED")
elif r == 4:
print("THU")
elif r == 5:
print("FRI")
elif r == 6:
print("SAT")
elif r == 0:
print("SUN")
"2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다."의 조건을 위한 월벌 날짜 수 설정
m,d = map(int,input().split())
days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
여기서 생기는 문제점, 1월 31일은 수요일로 끝나는데, 2월 1일은 목요일이 아닌 월요일로 출력이 됨.
그래서 2월 1일은 1월의 날짜 갯수인 (31+1)%7로 출력 가능하듯이, (앞에 지나간 개월 + 날짜) % 7로 계산해서 알 수 있다!
m,d = map(int,input().split())
month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if m == 1:
d = days
else:
days = sum(month[0:m-1]) + d
r = days % 7
if r == 1:
print("MON")
elif r == 2:
print("TUE")
elif r == 3:
print("WED")
elif r == 4:
print("THU")
elif r == 5:
print("FRI")
elif r == 6:
print("SAT")
elif r == 0:
print("SUN")
컴파일 에러 떠서 안된다,,, 근데 왜 안되는지 전혀 모르겠음,,,ㅠㅠ
그래서 구글링 결과 if문들을 리스트로 전환해서 해결하는 방법을 찾음,,
month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
week = ["SUN", "MON","TUE", "WED", "THU", "FRI", "SAT"]
days = 0
m, d = map(int,input().split())
for i in range(0, m-1):
days += month[i]
ans = (days + d) % 7
print(week[ans])
어째저째 해결ㅠ
친구가 찾아준 해결방법
days= 0 을 먼저 선언하는걸 까먹음,
list의
m, d = map(int, input().split())
month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
days = 0
if m == 1:
days = d
else:
days = sum(month[0:m]) + d
r = days % 7
if r == 1:
print("MON")
elif r == 2:
print("TUE")
elif r == 3:
print("WED")
elif r == 4:
print("THU")
elif r == 5:
print("FRI")
elif r == 6:
print("SAT")
elif r == 0:
print("SUN")