[파이썬/Python] 백준 13458 - 시험 감독

김경훈·2024년 2월 26일
0

Python / Algorithm

목록 보기
4/4

https://www.acmicpc.net/problem/13458
난이도 - 브론즈 2
알고리즘 분류 - 수학, 사칙연산


정답 코드

import sys
input = sys.stdin.readline

N = int(input())
A = list(map(int, input().split()))
B, C = map(int, input().split())

result = 0

for i in range(N):
    A[i] -= B
    result += 1

    if A[i] > 0:
        if A[i] % C == 0:
            result += A[i]//C
        else:
            result += A[i]//C + 1

print(result)

해설

  1. 고사장이 N개 있고, 각 고사장에 있는 사람 수를 리스트로 담아둡니다.
A = list(map(int, input().split()))
  1. B = 총감독관의 능력, C = 부감독관의 능력 입니다.
B, C = map(int, input().split())
  1. 각 고사장 당 총 감독이 1명씩 무조건 들어가야하기 때문에, 고사장에서 총감독의 능력 만큼 학생수를 제외시키고 총감독관이 1명 들어갔으니 전체 감독관 수에 +1을 합니다.
for i in range(N):
    A[i] -= B
    result += 1
  1. 총감독관의 역할이 끝나고 남은 학생이 있다면, 나머지는 부감독관이 담당합니다.
    남은 학생 수가 부감독관 능력의 배수라면 딱맞게 나눈 몫을 추가하면 그게 부감독관 수이고,
if A[i] > 0:
        if A[i] % C == 0:
            result += A[i]//C

알맞게 나누어 떨어지지 않는다면 부감독관을 한명 더 배치하면 됩니다.

else:
            result += A[i]//C + 1
  1. 이렇게 구한 감독관 수를 출력하면 끝입니다.
print(result)

profile
Cloud & DevOps

0개의 댓글

관련 채용 정보