정답 코드 : datetime을 쓰는 문제였다. 라이브러리를 사용하지 않고 풀어야 된다는 강박증이 있었던 것 같다...
import datetime
# 실버 5
today = list(map(int,input().split()))
d_day = list(map(int,input().split()))
if d_day[0]-today[0] >1000:
print('gg')
exit(0)
elif d_day[0]-today[0] == 1000 and (today[1], today[2]) <= (d_day[1],d_day[2]):
print('gg')
exit(0)
else:
todays = datetime.date(*today)
d_days = datetime.date(*d_day)
print(f'D-{d_days.toordinal()-todays.toordinal()}')
오답 : 54%, 같은 연도일 때가 계산에 포함되지 않았음
# 실버 5
today = list(map(int,input().split()))
d_day = list(map(int,input().split()))
if d_day[0]-today[0] >1000:
print('gg')
exit(0)
elif d_day[0]-today[0] == 1000 and (today[1], today[2]) <= (d_day[1],d_day[2]):
print('gg')
exit(0)
def find_lunar(year):
flag = 0
if year % 4==0:
flag = 1
if year % 100==0:
flag = 0
if year % 400==0:
flag = 1
return flag
result = 0
today_luar = find_lunar(today[0])
for i in range(today[0]+1,d_day[0]):
if find_lunar(i):
result += 366
else:
result += 365
for i in range(today[1],13):
if i == 2 and today_luar: # 윤년인 2월
result += 29
elif i == 2 and not today_luar: # 윤년이 아닌 2월
result += 28
pass
elif i in [1,3,5,7,8,10,12]: # 31일
result += 31
else:
result += 30
result -= today[2]
# 새 년도 구하기
d_day_lunar = find_lunar(d_day[0])
for i in range(1,d_day[1]):
if i == 2 and d_day_lunar: # 윤년인 2월
result += 29
elif i == 2 and not d_day_lunar: # 윤년이 아닌 2월
result += 28
pass
elif i in [1,3,5,7,8,10,12]: # 31일
result += 31
else:
result += 30
result += d_day[2]
print(f'D-{result}')
오답 20%
# 실버 5
today = list(map(int,input().split()))
d_day = list(map(int,input().split()))
if d_day[0]-today[0] >=1000:
print('gg')
exit(0)
def find_lunar(year):
flag = 0
if year % 4==0:
flag = 1
if year % 100==0:
flag = 0
if year % 400==0:
flag = 1
return flag
today_luar = find_lunar(today[0])
result = (d_day[0]-1 - today[0]) *365
for i in range(today[1],13):
if i == 2 and today_luar: # 윤년인 2월
result += 29
elif i == 2 and not today_luar: # 윤년이 아닌 2월
result += 28
pass
elif i in [1,3,5,7,8,10,12]: # 31일
result += 31
else:
result += 30
result -= today[2]
# 새 년도 구하기
d_day_lunar = find_lunar(d_day[0])
for i in range(1,d_day[1]):
if i == 2 and d_day_lunar: # 윤년인 2월
result += 29
elif i == 2 and not d_day_lunar: # 윤년이 아닌 2월
result += 28
pass
elif i in [1,3,5,7,8,10,12]: # 31일
result += 31
else:
result += 30
result += d_day[2]
print(f'D-{result}')
'알고리즘 문제풀이' 카테고리의 다른 글
백준 1018 체스판 다시 칠하기 Python 브루트포스 실버4 (0) | 2024.03.11 |
---|---|
백준 1157 단어공부 Python 구현 문자열 브론즈 1 (0) | 2024.03.11 |
백준 1145 적어도 배수 Python 브루트포스 브론즈1 (0) | 2024.03.10 |
백준 2443 별찍기-6 Python 구현 브론즈3 (0) | 2024.03.10 |
백준 2869 달팽이는 올라가고 싶다 Python 수학 브론즈1 (0) | 2024.03.09 |