총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 명이다.
감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 C명이다.
각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다.
각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오.
매우 간단한 수학, 사칙연산 문제이다.
각 시험자에 있는 응시자 수가 B(총 감독관이 한 시험장에서 감시할 수 있는 응시자 수)보다 크면 그 차이를 C로 채우면 되는 간단한 문제다.
아래 풀이는 기존에 내가 풀었던 풀이다.
n = int(input())
a = list(map(int, input().split()))
b, c = map(int, input().split())
ret = 0
for i in range(n):
if a[i] > b:
div, mod = divmod((a[i] - b), c)
if mod == 0:
ret += div + 1
else:
ret += div + 2
else:
ret += 1
print(ret)
아래 풀이는 vscode의 확장 프로그램인 AICodeHelper를 사용하여 리팩토링한 코드이다. AICodeHelper는 AI모델인 GPT3.5 Turbo를 기반으로 코딩을 해주고 코드리뷰도 해주고 그 외의 다양한 엄청난 기능들을 하는 vscode의 extension이다.
n = int(input())
a = list(map(int, input().split()))
b, c = map(int, input().split())
ret = sum((x - b - 1) // c + 2 if x > b else 1 for x in a)
print(ret)
코드가 훨씬 간결해진 모습을 볼 수 있다.
AICodeHelper를 사용하는 방법은 해당 링크를 참고하자.