Q>
시작 날짜와 끝 날짜가 주어질 때, 두 날짜가 며칠만큼 떨어져 있는지(D-day)를 구하려 합니다.
이를 위해 다음과 같이 3단계로 간단히 프로그램 구조를 작성했습니다.(단, 윤년은 고려하지 않습니다.)
1단계. 시작 날짜가 1월 1일로부터 며칠만큼 떨어져 있는지 구합니다.
2단계. 끝 날짜가 1월 1일로부터 며칠만큼 떨어져 있는지 구합니다.
3단계. (2단계에서 구한 날짜) - (1단계에서 구한 날짜)를 구합니다.
시작 날짜의 월, 일을 나타내는 startmonth, startday,
끝 날짜의 월, 일을 나타내는 endmonth, endday가 매개변수로 주어질 때,
시작 날짜와 끝 날짜가 며칠만큼 return 하도록 solution 함수를 작성했습니다.
이떄, 위 구조를 참고하여 중복되는 부분은 func_a라는 함수로 작성했습니다.
코드가 올바르게 동작할 수 있도록 빈칸을 알맞게 채워주세요.
- 매개변수 설명
시작 날짜의 월, 일을 나타내는 startmonth, startday,
끝 날짜의 월, 일을 나타내는 endday가 solution 함수의 매개변수로 주어집니다.
* 잘못된 날짜가 주어지는 경우는 없습니다.
* 끝 날짜는 항상 시작 날짜보다 뒤에 있는 날이 주어집니다.
* 끝 날짜가 다음 해로 넘어가는 경우는 주어지지 않습니다.
** 즉, startmonth <- endmonth를 항상 만족합니다.
** startmonth = endmonth라면 startday <- endday를 항상 만족합니다.
* 각달의 날짜 수는 1월부터 순서대로 [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 이며, 윤년은 고려하지 않습니다.
- return 값 설명
시작 날짜와 끝 날짜가 며칠만큼 떨어져 있는지 return 해주세요.
- 예시
strat_month | start_day | end_month | end_day | retrun |
1 | 2 | 2 | 2 | 31 |
- 예시 설명
시작 날짜는 1월 2일이고, 끝 날짜는 2월 2일입니다.
* 1월 2일은 1월 1일로부터 1일만큼 지난 날입니다.
* 2월 2일은 1월 1일로부터 32일만큼 지난 날입니다.
* 32 - 1 = 31 입니다.
* 따라서 1월 2일과 2월 2일은 31일만큼 떨어져 있습니다.
A>
def func_a(month, day):
month_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
total = 0
for i in range(month - 1):
total += month_list[i]
total += day
return total - 1
def solution(start_month, start_day, end_month, end_day):
start_total = func_a(start_month, start_day)
end_total = func_a(end_month, end_day)
return end_total - start_total
start_month = 1
start_day = 2
end_month = 2
end_day = 2
ret = solution(start_month, start_day, end_month, end_day)
print(ret)
W>
solution 함수가 먼저 실행 되고 fun_a 함수가 실행된다.
F>
'Python_Matter > COS Pro' 카테고리의 다른 글
YBM Python Test Level 2 - 369 게임 (0) | 2019.10.14 |
---|---|
YBM Python Test Level 2 - 주어진 리스트의 순서 뒤집기 (0) | 2019.10.14 |
YBM Python Test Level 2 - 자연수 리스트 (0) | 2019.10.14 |
YBM Python Test Level 2 - 회원 등급 할인 서비스 (0) | 2019.10.11 |
YBM Python Test Level 2 - 티셔츠별로 세기 (0) | 2019.10.11 |