import sys
input = sys.stdin.readline
if __name__ == '__main__':
answer = 0
N = int(input())
a_lst = list(map(int,input().split()))
B,C = map(int,input().split())
for a in a_lst:
b_flag = True
cnt = 0
while a > 0:
if b_flag:
a -= B
b_flag = False
cnt += 1
else:
a -= C
cnt += 1
answer += cnt
print(answer)
총감독관은 반드시 1명 있어야 한다.
따라서, 응시생에서 B를 빼주고 감독관 수 증가
그리고 나머지 인원에 대하여 부감독관 처리를 해주었다.
그런데 이렇게 하면 시간 초과가 발생한다.
for과 while의 혼용으로 이중 반복문이기 때문이다.
따라서 코드를 다음과 같이 수정했다.
import sys
import math
input = sys.stdin.readline
if __name__ == '__main__':
N = int(input())
a_lst = list(map(int,input().split()))
B,C = map(int,input().split())
answer = N
for a in a_lst:
if a-B > 0:
answer += math.ceil((a-B)/C)
print(answer)
위에서 언급한 바와 같이 총감독관은 반드시 1명 들어가야하므로
B를 미리 빼주었다.
그리고 남은 인원에 대하여 C를 나눈 값을 올림한 것이 곧 필요한 부감독관의 수가 된다.
5
10 9 10 9 10
7 2
각 방마다 총감독관이 투입하여 감시할 수 있는 인원을 제한다.
a_lst = [3,2,3,2,3]
answer = 5
이제 부감독관이 몇 명 투입해야하는지를 구한다.
0번 방: 3/2 = 1.5 --> 올림 --> 2
1번 방: 2/2 = 1.0 --> 올림 --> 1
2번 방: 3/2 = 1.5 --> 올림 --> 2
.
.
.
그렇게 해서 최종적으로 2+1+2+1+2 = 8명이 필요하다.
따라서 answer = 5+8 = 13