PS/백준

[BOJ] 13458 시험 감독 (C/C++)

uyt8989 2022. 3. 17. 19:58
 

13458번: 시험 감독

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

www.acmicpc.net

문제

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

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

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

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

입력

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

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

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

출력

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


상당히 쉬운 문제였다. 삼성 기출문제치고는 너무 쉬웠다고 생각한다. 아마 한참 전에 나왔던 문제일 것이라고 생각한다.

 

가장 처음에 떠올린 가장 단순한 방법도 O(N)에 해결 가능했다. 그 이후에 뭔가 콤팩트한 식이 없을까 생각해봤지만 잘 떠오르지는 않았다. 핵심은 (응시자 수 - 총감독관이 감시 가능한 인원수 / 부감독관이 감시 가능한 인원수)의 값을 올림 한 수를 모두 더하는 것이었다. 반올림은 해봤지만 올림은 해본 적이 없었다.  

 

구글과 백준에서 맞은 사람들의 코드를 확인해봤다. 하지만 딱히 이렇다할 식을 발견할 수는 없었다.

 

 

후기)

이번 주는 너무 바쁜 것 같다. 매일 알고리즘 문제를 한문제 풀고 블로그에 글쓰기 시작한 지 어느덧 78일이더라. 꾸준함의 결과를 믿자.

'PS > 백준' 카테고리의 다른 글

[BOJ] 2407 조합 (C/C++)  (0) 2022.03.19
[BOJ] 14891 톱니바퀴 (C/C++)  (0) 2022.03.18
[BOJ] 16235 나무 재테크 (C/C++)  (0) 2022.03.16
[BOJ] 17140 이차원 배열과 연산 (C/C++)  (0) 2022.03.15
[BOJ] 17142 연구소 3 (C/C++)  (0) 2022.03.14