반응형
https://www.acmicpc.net/problem/1340
문자열 처리 문제였습니다.
풀이방법
1. 현재 연도가 윤년이냐 아니냐에 따라 2월의 날짜 수가 달라집니다. 이 말은 윤년에는 하루가 366일이라는 의미입니다. 따라서 먼저 윤년인지 여부를 판단합니다.
2. 비교하는 최소의 단위가 '분'이기 때문에 입력 받은 정보를 분 단위로 치환해야 합니다.
* 날의 수를 셀 때 입력받은 달의 이전 달까지만 세야하며 입력받은 날짜의 이전 날짜까지만 세야합니다,
Code
date = input().split(" ")
one_year_total_minute = 0
days = 0
day_per_month = {
"January" : 31,
"February" : 28,
"March" : 31,
"April" : 30,
"May" : 31,
"June" : 30,
"July" : 31,
"August" : 31,
"September" : 30,
"October" : 31,
"November" : 30,
"December" : 31,
}
day_per_month_yoon = {
"January" : 31,
"February" : 29,
"March" : 31,
"April" : 30,
"May" : 31,
"June" : 30,
"July" : 31,
"August" : 31,
"September" : 30,
"October" : 31,
"November" : 30,
"December" : 31,
}
def isYoonYear(year):
if(year % 400 == 0): return True
if(year % 4 == 0 and year % 100 > 0): return True
return False
if(isYoonYear(int(date[2])) == True):
one_year_total_minute = 366 * 24 * 60
for key, value in day_per_month_yoon.items() :
if(key == date[0]): break
days += value
else:
one_year_total_minute = 365 * 24 * 60
for key, value in day_per_month.items() :
if(key == date[0]): break
days += value
hour = int(date[3][0:2])
minute = int(date[3][3:])
day = int(date[1][0:-1]) - 1
totalMinute = (days + day) * 24 * 60 + hour * 60 + minute
print(totalMinute / one_year_total_minute * 100)
Test Case
January 1, 1981 00:00
답 : 0.0
'Algorithm > String' 카테고리의 다른 글
(C++) - 백준(BOJ) 11117번 : Letter Cookies (0) | 2021.08.03 |
---|---|
(C++) - 백준(BOJ) 4889번 : 안정적인 문자열 (2) | 2021.08.01 |
(C++) - 백준(BOJ) 21734번 : SMUPC의 등장 (0) | 2021.07.25 |
(C++) - 프로그래머스(2021 카카오 채용연계형 인턴십) : 숫자 문자열과 영단어 (0) | 2021.07.16 |
(C++) - 백준(BOJ) 1969번 : DNA (0) | 2021.06.01 |