13458. 시험감독 문제 바로가기
해결 방법
문제 정리
필요한 감독관(총감독관, 부감독관) 수의 최솟값을 구해야 한다.
총감독관
한 시험장에 감시할 수 있는 응시자 수가 B명!
시험장에 오직 1명만 존재!
부감독관
한 시험장에 감시할 수 있는 응시자의 수가 C명!
시험장에 여러 명 존재 가능
구현 방법
입력을 받고 기본 설정한다.
주요 변수 설명
cnt
: 출력할 정답으로 필요한 감독관의 수를 저장하는 변수이다.처음 초기값을 N으로 설정한다. 총감독관은 한 시험장에 오직 1명씩만 존재하기 때문에 기본적으로 총감독관의 수를 초기값으로 두고 필요한 최소한의 부감독관의 수를 더해줄 것이다.
각 시험장에 응시자의 수를 for문을 통해 살펴본다.
총감독관만으로 감시가 불가능한 경우 (
if people - B > 0
)diff
에 감시가 필요한 인원을 저장하고 부감독관이 감시할 수 있는 인원 C로 나눈다.몫의 값을 그대로
cnt
에 더해주고 나머지가 0이 아닌 경우cnt
에 1을 더해주면 된다.
구현한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
N = int(input())
candidate = list(map(int, input().split()))
B, C = map(int, input().split())
cnt = N # 각 시험장에 총감독관은 오직 1명 있어야 하는 조건
for i in range(len(candidate)):
people = candidate[i]
if people - B > 0: # 감시가 필요한 사람들이 있으면 부감독관 추가
diff = people - B
q, r = divmod(diff, C)
cnt += q
if r != 0:
cnt += 1
print(cnt)