[COS PRO 2급-Python] 시작 날짜와 끝 날짜의 사이 날짜 구하기

Sunhee·2023년 4월 5일

COS PRO - Python 2급

목록 보기
3/44
post-thumbnail

문제 설명

시작 날짜와 끝 날짜가 주어질 때, 두 날짜가 며칠만큼 떨어져 있는지(D-day)를 구하려고 합니다. 이를 위해 다음과 같이 3단계로 간단히 프로그램 구조를 작성했습니다. (단, 윤년은 고려하지 않습니다.)

  • 1단계. 시작 날짜가 1월 1일로부터 며칠만큼 떨어져 있는지 구합니다.
  • 2단계. 끝 날짜가 1월 1일로부터 며칠만큼 떨어져 있는지 구합니다.
  • 3단계. (2단계에서 구한 날짜) - (1단계에서 구한 날짜)를 구합니다.

시작 날짜의 월, 일을 나타내는 startmonth, startday, 끝 날짜의 월, 일을 나타내는 endmonth, endday가 매개변수로 주어질 때, 시작 날짜와 끝 날짜가 며칠만큼 떨어져 있는지 return 하도록 solution 함수를 작성했습니다. 이때, 위 구조를 참고하여 중복되는 부분은 func_a라는 함수로 작성했습니다. 코드가 올바르게 동작할 수 있도록 빈칸을 알맞게 채워주세요.


매개변수 설정

시작 날짜이 월, 일을 나타내는 startmonth, starday, 끝 날짜의 월,일을 나타내는 endmonth, endday가 solution 함수의 매개변수로 주어집니다.

  • 잘못된 날짜가 주어지는 경우는 없습니다.
  • 끝 날짜는 항상 시작 날짜보다 뒤에 있는 날이 주어집니다.
  • 끝 날짜가 다음 해로 넘어가는 경우 주어지지 않습니다.
  1. 즉, startmonth <= endmonth를 항상 만족합니ㅏㄷ.
  2. startmonth = endmonth라면 startday <= endday를 항상 만족합니다.
  • 각 달의 날짜 수는 1월부터 순서대로[31,28,31,30,31,30,31,31,30,31,30,31]이며, 윤년은 고려하지 않습니다.


return 값 설명

시작 날짜와 끝 날짜가 며칠만큼 떨어져 있는지 return 해주세요.


예시



알고리즘 구상

▶ month_list배열에 달에 며칠이 있는지 써넣는다.
▶ for문을 배열-1까지 돌려서 달의 날짜를 더한 후 day의 날짜를 더한다.


내가 쓴 코드!

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 - 1
	return total - 1



다른 사람의 코드 01

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(1, day):
		total += i
	if month > 1:
 		total += month_list[month-2] + day-1
	else:
		total += day-1
	return total - 1

for문으로 1부터 day만큼 더한 값을 total에 넣는다.
그리고 month가 1보다 크면 total에 month_list에서 지난 달의 날짜 수 + day-1을 하고 month가 1이면 total에 day-1을 한다.


느낀점

다른 사람의 코드를 보는 것은 나의 코드를 보는 것 보다 어려운 일인 것 같다. 개발자는 나혼자 하는 것이 아닌 다 함께 같이 하는 일이 많기 때문에 다른 사람의 코드도 읽는 연습을 많이 해두자!



0개의 댓글