백준 13458번: 시험 감독

최창효·2022년 1월 15일
0
post-thumbnail


문제 설명

  • 시험장별로 "1B+tC>=1*B + t*C >= 시험장의 응시자 수" 를 만족하는 가장 작은 t(i)를 구한 뒤, 모든 시험장의 (1+t(i))값을 더하는 문제입니다.

접근법

  • 총감독관이 해당 강의실의 학생을 모두 감시할 수 있다면 부감독관이 필요하지 않습니다.
  • 한명이라도 감시할 수 없으면 부감독관을 추가해야 합니다.

정답

import math
N = int(input())
lst = list(map(int,input().split(' ')))
B,C = list(map(int,input().split(' ')))

answer =0 #총 필요한 감독관의 수
for l in lst:
    if B>=l: #총감독관만으로 해당 강의실을 모두 감시할 수 있다면
        answer+=1 #총감독관 1명만 필요합니다
    else: #총감독관만으로 해당 강의실을 모두 감시할 수 없다면
        answer+=1 #일단 총감독관 1명은 들어가야 합니다
        # 총감독관이 감시할 수 없는 학생의 수 == 부감독관들이 감시해야 하는 학생의 수 == l-B
        answer += math.ceil((l-B)/C) 
        """
        math를 쓰지 않고 올림을 다음과같이 표현할 수도 있습니다
        div,mod = divmod(l-B,C)
        if mod != 0:
            cnt+=1
        cnt+=div        
        """
        

print(answer)
profile
기록하고 정리하는 걸 좋아하는 개발자.

0개의 댓글