BAEKJUN 13485 시험감독

임경현·2023년 3월 30일
0

알고리즘 풀이

목록 보기
1/11

문제링크: 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()
profile
마음을 치유하고 싶은 인공지능 개발자

0개의 댓글