차곡차곡

[BOJ/Python] 백준 13458번 - 시험 감독 본문

CS/Algorithm

[BOJ/Python] 백준 13458번 - 시험 감독

sohy 2022. 8. 11. 01:18

백준 #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

import sys
input = sys.stdin.readline

n = int(input())   # 시험장의 개수
nums = list(map(int, input().split()))  # 각 시험장 내 응시자 수
first_sup, sec_sup = map(int, input().split())   #  총감독관이 감시할 수 있는 응시자 수, 부감독관이 감시할 수 있는 응시자 수

cnt = 0   # 필요한 감독관 최소 수

for num in nums:
  # 총감독관 감시
  num -= first_sup
  cnt += 1
  # 부감독관 감시
  if num > 0:
    if num % sec_sup == 0:
      cnt += (num // sec_sup)
    else:
      cnt += (num // sec_sup + 1)

print(cnt)

총감독관은 한 명밖에 없기 때문에 응시자 수에서 총감독관이 감시할 수 있는 인원 수를 뺀 나머지 전체는 부감독관이 감시하게 된다. 나머지 인원 수를 부감독관이 감시할 수 인원 수로 나눴을 때 몫이 필요한 부감독관의 인원 수가 된다. 이때 나머지가 있다면 부감독관이 한 명 더 필요한 것을 의미한다.

정리하면,

  • 나머지 = 응시자 수 - 총감독관 감시 인원 수
  • 필요한 감독관 수 += 1
  • (나머지가 나누어 떨어지면)
    • 필요한 감독관 수 += (나머지 // 부감독관 감시 인원 수)
  • (나머지가 나누어 떨어지지 않으면)
    • 필요한 감독관 수 += (나머지 // 부감독관 감시 인원 수 + 1)

Comments