코딩테스트
[백준] 13458 시험 감독 (by Python)
하루살이
2023. 3. 20. 22:51
문제(브론즈2)
https://www.acmicpc.net/problem/13458
13458번: 시험 감독
첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)
www.acmicpc.net
문제설명
문제는 쉬워보이는데 정답률이 매우 낮은 문제다.. 나는 한 번에 맞겠지! 하고 채점했는데 나 역시 틀려버림 ㅎ.ㅎ
총감독관은 1명당 b명씩 관리할 수 있고 1명만 존재, 부감독관은 1명당 c명씩 관리할 수 있고 여려명 존재 가능
각 room 별로 총감독관이 관리하는 학생 수(c) 빼고, 나머지 학생들에 대해 연산을 통해 부감독관을 배치했다.
# 목표) 감독관 최소 수 찾기
import sys
input = sys.stdin.readline
room_num = int(input())
people_nums = list(map(int, input().split()))
b, c = map(int, input().split()) # 총감독관, 부감독관
count = 0 # 감독관 수
for i in range(len(people_nums)):
if people_nums[i] >= b:
count += 1
people_nums[i] -= b
else: # 총감독관이 감독할 수 있는 학생 수 > room 당 학생수 일 경우 예외처리
count += 1
continue
if people_nums[i]:
count += people_nums[i] // c # c명씩 부감독관 1명 할당
if people_nums[i] % c != 0: # c보다 작은 나머지 인원 부감독관 1명 할당
count += 1
print(count)
총감독관이 감독할 수 있는 학생 수 > room 당 학생수 일 경우 예외처리를 안해줘서 틀렸다.
예외처리를 안했을 경우 반례는 다음과 같다.
# 반례
1
5
100 1
# output
-94