[BOJ 13458] 시험 감독 (Python)

박지훈·2021년 4월 11일
0

문제

링크



풀이

아래의 로직으로 문제를 접근하였다. 각각 시험장 인원마다 시험감독관을 배치하도록 하였다.

  1. (첫 번째 시험장 경우) 시험장 총 인원 - 총감독관 감시 가능 인원을 계산하고, 필요한 감독관 수를 1 증가시킨다.

  2. 계산된 시험장 총 인원 - 총감독관 감시 가능 인원부감독관 감시 가능 인원으로 나눈 후 해당 몫을 필요한 감독관 수에 더한다.
    만약 나머지가 0이 아니면 -> 필요한 감독관 수 + 1
    나눠 떨어지면 -> 다음 시험장 검사

  3. 위 과정 반복한다.

  4. 반복이 종료되면 필요한 감독관 수에 시험장의 총 갯수를 더한다. (총감독관은 무조건 1명이 있어야하기 때문에 시험장의 총 갯수와 같다!)

예외처리를 해야한다! 총감독관 1명만으로 인원을 감시할 수 있으면 부감독관을 배치할 필요가 없다.



코드

import sys

input = sys.stdin.readline
N = int(input())
test_sites = list(map(int, input().split()))
B, C = map(int, input().split())
ans = 0

for test_site in test_sites:
    # 부감독관 배치
    # (주의!) 총감독관 먼저 1명을 무조건 선정해야함. -> 문제에 해당조건이 있나?
    # 총감독관 1명만으로 시험인원 감독가능하면 아래 코드 실행 X -> 정답에서 +1 해줘서 총감독관만으로 시험인원 감독하게 함
    if test_site >= B:
        test_site -= B
        ans += test_site // C
        if test_site % C != 0:
            ans += 1

# 총감독관 배치 인원 수는 N이다. (총감독관은 오직 1명)
print(ans + N)
profile
Computer Science!!

0개의 댓글