Min:D's Devlog

[백준][삼성 SW 역량 테스트][Bronze 2][C++] 13458 시험 감독 본문

알고리즘/백준

[백준][삼성 SW 역량 테스트][Bronze 2][C++] 13458 시험 감독

Min:D 2020. 10. 12. 19:00

문제

백준 삼성 SW 역량 테스트 기출 문제 - 13458 시험 감독 (Bronze 2)

 

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명이 배정되야하기 때문에, answer시험장의 수를 더하고 시작하였다.

그리고 각 시험장의 인원에서 총감독관이 감시할 수 있는 인원인 B를 빼주었고,

그 값을 C로 나눈 몫을 answer에 더해주어 답을 구하였다.

(나누어 떨어지지 않는 경우 1을 더 더해주었다.)

 

이 때, answer은 int의 범위를 넘어갈 수 있기 때문에, long long으로 선언해야한다.

 


풀이 코드 - C++

#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
    
	int N;
	cin >> N;
	int A[1000000];
	for (int i = 0; i < N; i++) {
		cin >> A[i];
	}
	int B, C;
	cin >> B >> C;

	long long answer = N;
	for (int i = 0; i < N; i++) {
		A[i] -= B;
		if (A[i] > 0) {
			answer += A[i] / C;
			if (A[i] % C != 0)
				answer++;
		}
	}
	cout << answer;
}

실행 결과

Comments