노베이스 알고리즘 공부 #6. 백준 1924. 2007년 - Python

Anny·2024년 3월 18일
0

https://www.acmicpc.net/problem/1924

1. 문제

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

2. 풀이

2-1. 접근

예전에 어딘가에서 본 적 있는 유형 이었음,
날짜를 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로 계산해서 알 수 있다!

1트

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문들을 리스트로 전환해서 해결하는 방법을 찾음,,

2트

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")
profile
Newbie

0개의 댓글