datetime을 이용할 수도 있겠지만, 알고리즘 연습이니 라이브러리 없이 풀어내는걸 목표로 했다. days에 월별로 날짜수를 저장해둔 뒤에, 윤년 처리를 해주고 분 단위로 1년 대비 현재 진행 시간을 알아내었다. 하루 차이가 나길래 어디서 오류가 나는지 찾느라 은근 시간이 걸렸던 문제.
# 1340
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
months = {'January':1,
'February':2,
'March':3,
'April':4,
'May':5,
'June':6,
'July':7,
'August':8,
'September':9,
'October':10,
'November':11,
'December':12}
month, day, year, time = input().split()
month = months[month]
day = int(day[:-1])
year = int(year)
si, bum = map(int, time.split(':'))
if year%400==0 or (year%4==0 and year%100!=0):
days[1] += 1
now=0
total=sum(days)*24*60
now += sum(days[:(month-1)])*24*60
now += (day-1)*24*60
now += si*60
now += bum
print(now/total*100)
datetime을 이용한 풀이
datetime 라이브러리에서 datetime를 불러온 뒤에 주어진 date_str을 date_format에 따라 parsed_datetime을 얻어낸다. 그 뒤엔 parsed_datetime뒤에 .year
.month
같은 식으로 int 값을 얻어낼 수 있다. 나머지 과정은 동일하다.
# 1340
from datetime import datetime
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
months = {'January':1,
'February':2,
'March':3,
'April':4,
'May':5,
'June':6,
'July':7,
'August':8,
'September':9,
'October':10,
'November':11,
'December':12}
date_str = input()
date_format = '%B %d, %Y %H:%M'
parsed_datetime = datetime.strptime(date_str, date_format)
year = parsed_datetime.year
month = parsed_datetime.month
day = parsed_datetime.day
si = parsed_datetime.hour
bum = parsed_datetime.minute
if year%400==0 or (year%4==0 and year%100!=0):
days[1] += 1
now=0
total=sum(days)*24*60
now += sum(days[:(month-1)])*24*60
now += (day-1)*24*60
now += si*60
now += bum
print(now/total*100)