반응형
문제
총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 Ai명이다.
감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 C명이다.
각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다.
각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다.
셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)
출력
각 시험장마다 응시생을 모두 감독하기 위해 필요한 감독관의 최소 수를 출력한다.
예제 입력 111 1 1 |
예제 출력 11 |
예제 입력 233 4 5 2 2 |
예제 출력 27 |
예제 입력 351000000 1000000 1000000 1000000 1000000 5 7 |
예제 출력 3714290 |
예제 입력 4510 9 10 9 10 7 20 |
예제 출력 410 |
예제 입력 5510 9 10 9 10 7 2 |
예제 출력 513 |
풀이
각 반마다 총감독관은 무조건 필요하므로 n만큼의 총감독관이 필요하다.
이제 부감독관만 구하면 되는데, 총감독관은 무조건 한 명이 있으므로 각 반의 정원에서 b만큼 감소시켜주자.
그리고 남은 나머지를 c로 나눈 값의 올림이 필요한 부감독관의 수이다.
단, 총감독관 한 명만 있어도 반의 정원을 다 감시할 수 있을 때가 있다.
이 경우 i-b값이 음수가 되므로 max를 활용하여 음수가 나오지 않도록 했다.
import math
n = int(input())
A = list(map(int,input().split()))
b,c = map(int,input().split())
r = n
for i in A:
r += max(math.ceil((i-b)/c),0)
print(r)
반응형
'알고리즘 연습 > 수학, 정수론, 기하' 카테고리의 다른 글
[🥇5 / 백준 2166 / 파이썬] 다각형의 면적 (0) | 2021.09.24 |
---|---|
[🥈3 / 백준 9613 / 파이썬] GCD 합 (0) | 2021.09.22 |
[🥈3 / 백준 1004 / 파이썬] 어린 왕자 (0) | 2021.08.31 |
[🥉2 / 백준 1225 / 파이썬] 이상한 곱셈 (0) | 2021.07.18 |
[🥉3 / 백준 1009 / 파이썬] 분산처리 (0) | 2021.07.08 |