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
[문제 풀이]
문제의 해결법은 단순 수학이었던 것 같다.
수학식(+삼항연산자)
((A[i] - B) % C == 0) ? ((A[i] - B) / C + 1) : ((A[i] - B) / C + 2) 을 이용하여 풀었다.
다만 조금 고생했던 건 결과값이 int형 범위를 넘을 경우가 있으므로 그것을 고려해서 풀어야 된다.
[코드]
#include<iostream>
#include<vector>
using namespace std;
int N, B, C;
vector<int> A;
int main() {
scanf("%d", &N);
for (int i = 0; i < N; i++) {
int temp;
scanf("%d", &temp);
A.push_back(temp);
}
scanf("%d %d", &B, &C);
long long count = 0;
for (int i = 0; i < N; i++) {
if (A[i] <= B) {
count++;
}
else {
count += ((A[i] - B) % C == 0) ? ((A[i] - B) / C + 1) : ((A[i] - B) / C + 2);
}
}
printf("%lli", count);
return 0;
}
'algorithm > BOJ' 카테고리의 다른 글
백준 2748_피보나치 수 2(C++) (0) | 2020.04.03 |
---|---|
백준 7568_덩치(C++) (3) | 2020.04.03 |
백준 11729_하노이 탑 이동 순서(C++) (4) | 2020.04.01 |
백준 14888_연산자 끼워넣기(C++) (2) | 2020.03.28 |
백준 14501_퇴사(C++) (3) | 2020.03.25 |