[백준/파이썬] 1340번 연도 진행바 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1340번 연도 진행바
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
특정 날짜/시간이 주어졌을 때 해당 연도가 얼마나 진행되었는지 퍼센트로 출력하는 문제입니다.
코드
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을 출력합니다.
댓글남기기