백준(C언어) 풀이/수학

백준(C) 13458번 시험 감독 풀이

개발윗미 2021. 9. 24. 18:13

C로 구현한 13458번 시험 감독 문제 풀이입니다.

 

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


#include <stdio.h>

int arr[1000001];

int main() {
	int n, a, b;
	int temp, temp1, temp2;
	long long result = 0;
	scanf("%d", &n);
	
	for(int i=0; i<n; i++) {
		scanf("%d", &arr[i]);
	}	
	scanf("%d %d", &a, &b);
	
	result = n;
	for(int i=0; i<n; i++) {
		temp = arr[i] - a;
		
		if(temp > 0) {
			temp1 = temp/b;
			temp2 = temp%b;
			
			if(temp2 > 0) {
				temp2 = 1;
			}
			result += temp1 + temp2;
		}
	}
	printf("%lld\n", result);
}

 

시험장에 있는 총 감독관의 수는 n명이기 때문에 변수 result에 n을 먼저 할당한다.

 

반복문을 통해 변수 temp에 각 시험장에 있는 응시자의 수 - 총감독관이 감시할 수 있는 응시자 수 를 계산하여 할당하고

 

그 값이 0보다 크면 변수 temp1에 부감독관이 감시할 수 있는 응시자 수로 나눈 몫을 할당하고

 

변수 temp2에는 나머지 값을 할당한다.

 

그 후 다시 조건문을 통해 나머지 값이 0보다 크면 1로 다시 갱신해준다.

 

result 값에 temp1과 temp2를 더한 값을 누적해가는 방식으로 반복하고, 최종적으로 result 값을 출력한다.