[백준/파이썬] 1340번 연도 진행바 풀이

업데이트:



문제 정보


풀이

문제

특정 날짜/시간이 주어졌을 때 해당 연도가 얼마나 진행되었는지 퍼센트로 출력하는 문제입니다.

코드

months = {
    'January' : 31,
    'February' : 28,
    'March' : 31,
    'April' : 30,
    'May' : 31,
    'June' : 30,
    'July' : 31,
    'August' : 31,
    'September' : 30,
    'October' : 31,
    'November' : 30,
    'December': 31
    }

def isLeapYear(year):return (year%400 == 0) or (year%4 == 0 and year%100!=0)

month, day, year, time = input().split()
day, year, hour, minute = map(int,[day[:-1], year]+time.split(':'))

yearSec = 366 if isLeapYear(year) else 365
yearSec *= 60*60*24

passedSec = 0
for key,val in months.items():
    if key==month:break
    elif key=='February' and isLeapYear(year): passedSec += 29
    else:passedSec += val
passedSec += day - 1
passedSec *= 60*60*24
passedSec += hour*3600 + minute*60

print(passedSec/yearSec*100)

설명

윤년 여부를 먼저 판단해 연도 총 초(yearSec)를 구한 뒤, 해당 시점까지 지난 일/시간/분을 초 단위로 계산해 (지난 초 / 연도 전체 초) * 100을 출력합니다.



댓글남기기