[BOJ] 백준 13458번 시험 감독

정재욱·2023년 3월 29일
0

Algorithm

목록 보기
6/33

문제

총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 AiA_{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를 사용하는 방법은 해당 링크를 참고하자.

profile
AI 서비스 엔지니어를 목표로 공부하고 있습니다.

0개의 댓글