본문 바로가기

COS PRO 2급 기출문제 - Python

[1차] 문제3) 시작 날짜와 끝 날짜의 사이 날짜구하기 - Python3

edu.goorm.io/learn/lecture/17033/cos-pro-2%EA%B8%89-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-python

 

COS PRO 2급 기출문제 - Python - 구름EDU

YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.

edu.goorm.io

문제
설명
예시
빈칸 채우기 문제

  • 이 문제는 앞의 문제와 다르게 빈칸 채우는 문제이다.
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean

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
  
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('solution 함수의 반환 값은', ret, '입니다.')
  • 빈칸 채우는 문제이지만 방법이 떠오르지 않아 아래 코드를 더 추가했다.(정답처리 안될 줄 알았지만 다행히 정답 처리 됨~~)
  • for문으로 1부터 day만큼 더한 값을 total에 넣는다.
  • 그리고 month가 1보다 크면 total에 month_list에서 지난 달의 날짜 수 + day -1을 하고
  • month가 1이면  total에 day - 1을 한다.
  • 이렇게 하면 end_total = 32, start_total = 1이 나와 31을 return한다.

 

  • 빈칸만 채울 수 있는 방법을 좀 더 생각해보니
  • total에 더할 때 day와 month를 순서를 바꾸면 코드 추가 없이 정답이 나왔다.

 

# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean

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('solution 함수의 반환 값은', ret, '입니다.')

 

  • 먼저 month에 대한 날짜수를 더하고 나서 day를 더하는 방식으로 작성하였다.

 

실행결과