문제

요약
- 전체 시험장에서 필요한 감독관 수의 최솟값
- 총감독관은 딱 한명씩만
- 부감독관은 여러 명 있어도 가능함
접근 방법
- 총 감독관은 꼭 한명이고, 감시할 수 있는 응시자의 수가 정해져 있으니까, 총 감독관이 감시할 수 있는 응시자의 수를 미리 제거하자
- 이 때, 응시자의 수가 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
n = int(input()) # 시험장 개수
a = 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 |
후기
생각보다 금방 풀어서 기분이 좋았음
차근차근 접근하는게 중요한 것 같다
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[코딩테스트] 백준알고리즘 14888번 '연산자 끼워넣기' 파이썬 (0) | 2021.09.14 |
---|