https://www.acmicpc.net/problem/13458
총감독관은 무조건 1명은 존재해야 하기 때문에 기본적으로 답은 n부터 시작한다.
시험장마다의 인원보다 b가 크다면, 총감독관 혼자 커버할 수 있기 때문에 시험장 인원을 0으로 갱신해준다.
그렇지 않다면 시험장 인원에서 총감독관이 감시하고 있는 인원의 수인 b를 감소시켜준다.
다음으로 필요한 부감독관의 수를 계산한다. 1명이라도 부감독관이 감시할 수 있는 사람보다 수가 많으면 부감독관 한 명이 더 필요하기 때문에, 갱신한 시험장 인원을 c로 나눈 나머지가 0인지 아닌지에 따라서 부감독관의 인원을 정한다.
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 | #include<iostream> #include<algorithm> using namespace std; int n, arr[1000001], b, c; int main(void) { ios::sync_with_stdio(false); cin.tie(0); cin >> n; for (int i = 0; i < n; i++) cin >> arr[i]; cin >> b >> c; for (int i = 0; i < n; i++) { if (arr[i] <= b) arr[i] = 0; else arr[i] -= b; } long long ans = n; for (int i = 0; i < n; i++) { if (arr[i] % c != 0) ans = ans + (arr[i] / c) + 1; else ans = ans + (arr[i] / c); } cout << ans; return 0; } | cs |
'알고리즘 문제 풀이 > 백준 온라인 저지' 카테고리의 다른 글
백준 1644번: 소수의 연속합 (C++) (0) | 2019.08.29 |
---|---|
백준 2003번: 수들의 합 2 (C++) (0) | 2019.08.29 |
백준 14500번: 테트로미노 (C++) (0) | 2019.08.29 |
백준 14503번: 로봇 청소기 (C++) (0) | 2019.08.28 |
백준 14888번: 연산자 끼워넣기 (C++) (0) | 2019.08.27 |