본문 바로가기

Certificate/Cos Pro 1급 (Python)

[Cos Pro 1급] 기출문제 3회차, 선풍기를 몇대 사야 하나요

Hi, There!
안녕하세요, 바오밥입니다.


목차

  1. 문제
  2. 풀이

문제

문제 내용

실에 선풍기가 4대 있습니다.

선풍기는 한 대당 학생 k명에게 바람을 보냅니다.

모든 학생에게 바람을 보내기 위해서 선풍기를 몇 대 더 구매해야 할지 구하려고 합니다.

 

예를 들어, 선풍기 한 대당 학생 3명에게 바람을 보낼 수 있을 때, 한 교실당 학생 수가 [15, 17, 19, 10, 23] 명이고 선풍기가 4대 있으면 교실당 학생 [3, 5, 7, 0, 11] 명을 위해 선풍기를 더 구매해야 합니다.

이때, 교실별로 선풍기가 [1, 2, 3, 0, 4] 대씩 더 필요하니 총 선풍기 10대를 추가로 구매해야 합니다.

 

선풍기가 바람을 보내는 학생 수 k와 교실별 학생 수가 담긴 리스트 student가 주어질 때, 선풍기를 최소 몇 대 사야 하는지를 return 하도록 solution 함수를 작성했습니다. 그

러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.

주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

 

매개변수 설명

선풍기가 바람을 보내는 학생 수 k와 교실별 학생 수가 담긴 리스트 student가 solution 함수의 매개변수로 주어집니다.

  • 선풍기가 바람을 보내는 학생 수 k는 1 이상 25 이하인 정수입니다.
  • 한 교실엔 1명 이상 1,000명의 학생이 있습니다.
  • 교실은 1개 이상 100개 이하가 있습니다.

 

return 값 설명

선풍기를 최소 몇 대 사야 하는지를 return 합니다.

 

예시

 

예시 설명

예시 #1

이미 설치된 선풍기 4대로 모든 학생을 시원하게 해줄 수 있습니다.

 

예시 #2

문제에 나온 예와 같습니다.


풀이

풀이 코드 및 해설

def solution(k, student): # k : 선풍기가 커버하는 학생의 수, student : 학생 수를 담은 리스트
	answer = 0
	for s in student: # 학생 수가 담긴 리스트를 순회
		s -= 4*k # 학생 수 - (미리 설치되어 있던 선풍기 4대 * 선풍기당 커버하는 학생 수) = 남은 학생 수
		if s <= 0: # s가 4대로 커버가 안되는 경우에만 answer에 누적
			continue
		answer += (s + k - 1) // k # (남은 학생 수 + 선풍기당 커버하는 학생 수 - 1) // k = 최소 구매해야하는 선풍기 수
	return answer