문제

 

요약

  • 전체 시험장에서 필요한 감독관 수의 최솟값
  • 총감독관은 딱 한명씩만
  • 부감독관은 여러 명 있어도 가능함

 

접근 방법

  • 총 감독관은 꼭 한명이고, 감시할 수 있는 응시자의 수가 정해져 있으니까, 총 감독관이 감시할 수 있는 응시자의 수를 미리 제거하자
  • 이 때, 응시자의 수가 0보다 낮아져서 음수가 되면 안되니까 음수인 경우에는 0으로 바꾸기
  • 각 시험장에서 총감독관이 감시할 수 있는 응시자의 수를 빼면, 부감독관이 감시해야 하는 응시자의 숫자만 남는다
  • 남은 응사자의 수 / 부감독관이 감시할 수 있는 응시자의 수: 의 몫을 구하자
  • 근데 여기서 결과가 소수점으로 떨어질 수 있는데 이런 경우에는 그냥 올림을 해버리자
  • 각 시험장마다 이 계산을 반복해서 결과에 누적
  • 그리고 결과에는 총 감독관의 숫자를 더해줘야 한다

 

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import math
 
= int(input())  # 시험장 개수
= list(map(int, input().split()))  # 응시자의 수
b, c = map(int, input().split())  # 총 감독관, 부 감독관
 
# 각 시험장에서 각각 총 감독관이 감시할 수 있는 수험생의 숫자를 뺌
for i in range(n):
    if a[i] - b > 0:
        a[i] -= b
    else:
        a[i] = 0
 
result = n  # 기본적으로 한개 시험장에 총 감독관이 한명씩은 있어야함
 
for i in range(n):
    if a[i] <= 0:
        continue
    else:
        temp = int(math.ceil(a[i] / c))
 
    result += int(temp)
 
print(result)
 
cs

 

후기

생각보다 금방 풀어서 기분이 좋았음

차근차근 접근하는게 중요한 것 같다

+ Recent posts