본문 바로가기

algorithm/BOJ

백준 13458_시험감독(C++)

 

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