티스토리 뷰

 

1. 문제 

총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 Ai명이다.

 

감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 C명이다.

 

각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다.

 

각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오.

 

2. 입력 

첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.

 

둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다.

 

셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)

 

3. 출력 

각 시험장마다 응시생을 모두 감독하기 위해 필요한 감독관의 최소 수를 출력한다.

 

4. 풀이 

모든 시험장에는 총감독관 1명을 반드시 배치해야 하며, 이 총감독관은 지정된 수의 인원만 감시할 수 있다.

 

먼저 각 시험장의 응시자 수에서 총감독관이 감시 가능한 인원을 차감하고, 총감독관 1명을 카운트한다.

 

남은 인원은 부감독관이 감시해야 하며, 이때는 다음과 같이 계산한다:

 - 남은 인원 // 부감독관 감시 인원: 필요한 부감독관 수

 - 남은 인원 % 부감독관 감시 인원: 나머지가 존재하면 부감독관 1명을 추가로 더 배치해야 합니다.

 

이를 모든 시험장에 대해 반복하여 총 필요한 감독관 수를 계산한다.

 

 

 

5. 구현코드

n = int(input())
A = list(map(int,input().split()))
super1, super2 = map(int,input().split())

count = 0 # 필요한 감독관 수
for a in A:
    a -= super1  # 총감독관 1명이 반드시 감시 (한 시험장당 1명만 가능)
    count += 1 # 총감독관 1명 사용
    
    if a>0:
     # 부감독관이 감시해야 할 남은 인원에 대해 필요한 수 계산
        if a % super2:   # 부감독관이 감시해야 할 남은 인원에 대해 필요한 수 계산
            count += (a//super2)+1
        else:
            count += (a//super2)
            
print(count)
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함