728x90
https://www.acmicpc.net/problem/1340
22/09/16
이 문제 또한 실버 5 밀기 중 만난 문제로, 실버 5치고는 재미있게 풀었던 문제였다.(난이도가 살짝 높지만, 실버 4 수준 정도는 아니라는 뜻)
문제 접근 방식:
날짜를 입력 받으면, 그 년도를 기준으로 하여 현재 날짜가 몇 퍼센트 지나갔는지를 출력하는 간단한 문제이다.
이 문제에선 윤년을 판단해야만 했기 때문에 calendar 모듈에서 isleap메서드를 불러와서 사용하였다.
또한 month_dic을 만들어 주었는데, 이는 입력받은 달을 기준으로 지금까지 확정적으로 며칠을 지났는가를 value로 돌려주도록 만든 딕셔너리이다.
구현 자체는 1년을 기준으로 하여 지금까지 몇분이 지났는가를 계산하여 1년의 총 분(minute) 수를 나누어주는 것으로 구현하였다.
아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.
더보기
# 1340번 연도 진행바
# 구현
from calendar import isleap
month, day, year, time = input().split()
month_dic = {'January':0, 'February':31, 'March':59, 'April':90,
'May':120, 'June':151, 'July':181, 'August':212,
'September':243, 'October':273, 'November':304, 'December':334}
day = int(day.rstrip(','))
year = int(year)
hour, minute = map(int, time.split(':'))
days = month_dic[month] + day - 1
if isleap(year):
total_minute = 366*24*60
if month_dic[month] > 31:
days += 1
else:
total_minute = 365*24*60
passed_minute = days*24*60 + hour*60 + minute
print(100*passed_minute/total_minute)
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[Python] 1384번 메시지 (0) | 2022.09.29 |
---|---|
[Python] 1380번 귀걸이 (0) | 2022.09.29 |
[Python] 18155번 Issuing Plates (0) | 2022.09.29 |
[Python] 1308번 D-Day (0) | 2022.09.29 |
[Python] 2057번 팩토리얼 분해 (0) | 2022.09.29 |