우리 천일 후에 만나자!
사랑했던 그녀가 그렇게 말하고 던전 속으로 사라져 버렸다. 홀로 남은 나는 생각했다. 어디 보자, 천일 후면 날짜가...
문제의 정의
년, 월, 일이 주어졌을 때, n일 이후의 날짜를 계산하라!
문제의 분석
윤년 확인 함수
def leapyear(y):
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0: # 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때
return True
else:
return False
해당 월의 날짜 확인 함수
def invalidDay(y, m, d): # 해당 월의 마지막 날을 넘겼는지 확인
days = 31 # 마지막 날이 31일 까지인 월이 가장 많다.
if m in [4, 6, 9, 11]: # 마지막 날이 30인 월
days = 30
if m == 2: # 2월인지 확인
if leapyear(y): # 윤년 확인
days = 29
else:
days = 28
if d > days: # 받은 날이 해당 월의 마지막 날보다 큰 지 확인
return True
else:
return False
n일 후의 날짜 구하기
# n일 후의 날짜 구하기
year = 2021
month = 5
day = 13
n = 1000
for _ in range(n):
day += 1 # n일 후의 날 까지 하루씩 추가
if invalidDay(year, month, day): # 하루씩 추가 된 날이 해당 월의 마지막 날을 넘었는지 확인
day = 1 # 추가된 날짜가 해당 월의 마지막 날을 넘으면 일을 1일로 변경하고 월 추가
month += 1
if month > 12: # 월이 12월을 넘으면 다시 1월로 변경하고 년도를 추가
month = 1
year += 1
print(year, month, day)
** datetime 패키지를 사용하면 훨씬 간단하게 n일 후의 날짜를 구할 수 있다.
import datetime
year = 2021
month = 5
day = 13
n = 1000
day = datetime.date(year, month, day)
theday = day + datetime.timedelta(n)
print(theday)
이번 포스트는.. 그닥... 내맘속으로 다그닥다그닥♬