[C] Backjoon 13458 시험감독

less than 1 minute read

백준 13458번 문제는 시험 감독이다. 문제에 대한 내용과 그림 등은 백준에서 직접 확인하길 바란다. 복잡하지 않은 알고리즘 문제에서는 바로 코딩을 해도 되지만, 문제를 분석하고 어떤 함수와 요소들을 활용하여 문제를 해결할지 고민하고 정리하는 것이 시행착오를 줄일 수 있다.

문제 요구 사항을 분석하면 아래와 같다.

  1. 각 시험장에 총 감독관은 오직 1명만 있어야 한다 (이 문제에서는 각 시험장에 반드시 총 감독관이 1명 존재해야한다).
  2. 학생 모두를 감시할만큼 충분한 감독관이 배치되어야하며, 총 합은 최소가 되어야 한다.

문제 상세 요건 및 분석사항은 아래와 같다.

  1. 우선적으로 총 감독관을 배치한 후, 부감독관을 추가로 배치한다.
  2. 감독가능 한 인원 수 만큼을 소거하되, 음수 처리에 유의한다.
  3. int 자료형을 쓰는 것은 상관 없지만, 총 합은 자료형의 범위를 벗어날 수 있으므로 long long int를 사용한다.
#include <stdio.h>

int mat_a[1000001];

int main() {

	int N;
	int B, C;
	long long int t_num=0;
	scanf("%d", &N);

	for (int i = 1; i <= N; i++) {
		scanf("%d", &mat_a[i]);
	}
	scanf("%d %d", &B, &C);		

	for (int i = 1; i <= N; i++) {
		mat_a[i] -= B;
		t_num++;
		if (mat_a[i] > 0) t_num += (mat_a[i] - 1) / C +1;
	}
	printf("%lld", t_num);	
	return 0;
}