문제링크: https://www.acmicpc.net/problem/13458
요약: 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오.
간단하게 규칙에 맞추어 순차적으로 감독관을 배치하면 풀수있는 문제입니다.
우선 시험장마다 총감독관은 1명 필수로 있으므로, answer +=1을 적용해준다.
다음으로,
총감독관이 감시할 수 있는 응시자 수(B)가 시험장에 있는 학생의 수(A)보다 작을 경우, 그 차이만큼 학생을 감독할 수 있는 부감독관(C)을 배치해야한다.
따라서 (A-B) % C의 값에 따라 부감독관을 배치한다.
만약 남은 학생수가 부감독관이 감독할 수 있는 학생수의 약수이면, 몫만큼 부감독관을 배치하면 된다.
딱 나누어 떨어지지 않는 다면, 부감독관을 몫+1만큼 배치해야한다.
이를 구현하면 아래와 같다.
전체 코드
def solution():
N = int(input())
students = list(map(int, input().split()))
B, C = map(int, input().split())
answer = 0
for A in students:
answer += 1
if A > B:
if (A - B) % C == 0: answer += (A - B) // C
else: answer += (((A - B) // C) + 1)
return answer
def main():
answer = solution()
print(answer)
if __name__ == '__main__':
main()