Yeon's 개발블로그

지식을 전파하는 개발자가 되고싶습니다.

Algorithms/Samsung

[python] BOJ 백준 13458: 시험감독

Dev.yeon 2022. 2. 2. 14:40

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명이다. 하지만, 총감독관 한명으로 부족하다면, 응시자수에서 총감독관이 감시 가능한 학생수를 빼고, 부감독관이 감시할 수 있는 응시자의 수로 나누어주면 된다. 한가지 주의할 점은, 나누어 떨어지지 않으면 올림처리를 해주어 한명의 부감독관을 더 써야한다. 

 

5) 구현코드  

import math
n=int(input())
arr=list(map(int,input().split()))
b,c=map(int, input().split())
answer=0
for i in arr:
  if i-b<=0:
    answer+=1
  else:
    answer+=math.ceil((i-b)/c)+1
print(answer)

 

⭐️난이도:  브론즈 2⭐️ 

https://www.acmicpc.net/problem/13458

 

13458번: 시험 감독

첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)

www.acmicpc.net