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
이 문제에서 가장 중요한 조건은 '각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다.' 이다.
언뜻 보면 총감독관은 없어도 된다는 말 같지만 '각각의 시험장에는 총감독관은 무조건 1명이 있어야 한다' 로 해석해야 문제를 풀 수 있다.
첫 번째 반복문에서 (각 교실의 학생수 - 총감독관이 감독할 수 있는 학생수) 를 빼주고 (전체 감독관의 수)++ 를 해준다.
두 번째 반복문에서 (전체 감독관의 수) += (각 교실의 학생수 / 부감독관이 감독할 수 있는 학생수) 를 해주면 끝
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, b, c;
int arr[1000001];
int main(void) {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(NULL);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> arr[i];
}
cin >> b >> c;
ll ans = 0;
for (int i = 1; i <= n; i++) {
arr[i] -= b;
ans++;
}
for (int i = 1; i <= n; i++) {
if (arr[i] > 0) {
ans += arr[i] / c;
if (arr[i] % c > 0) {
ans++;
}
}
}
cout << ans;
return 0;
}

'CS > Algorithm' 카테고리의 다른 글
프로그래머스 - (PCCP 모의고사) 보물 지도 c++ (0) | 2023.05.19 |
---|---|
프로그래머스 - 순위 (c++) (0) | 2023.05.17 |
프로그래머스 - 전력망을 둘로 나누기 (c++) (0) | 2023.05.16 |
백준 - 최소 환승 경로(2021번) c++ (0) | 2023.04.11 |
프로그래머스 레벨3 - 숫자 게임 (C++) (0) | 2023.03.16 |