지구정복

[수학] 백준 - 시험 감독 본문

데이터 엔지니어링 정복/Algorithm

[수학] 백준 - 시험 감독

nooh._.jl 2021. 7. 19. 20:41
728x90
반응형

-문제해설

총감독관은 무조건 한명 배치되고 총감독관이 커버하지 못하는 나머지 학생수에 대해서 부감독관이 커버해야 된다.

그래서 총감독관이 감시할 수 있는 학생수는 처음에 빼고 시작한다.

남은 학생수는 부감독관이 감시할 수 있는 학생수로 나누는데 이때 나머지가 있으면 학생수/부감독관 감시수 + 1

나머지가 없다면 학생수/부감독관 감시수 를 해준다.

 

-자바

package math;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class BJ13458 {
	private static BufferedWriter bw = 
			new BufferedWriter( new OutputStreamWriter(System.out));
	private static int n, b, c;
	private static long sum;
	private static int[] a;
	private static StringTokenizer st;

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt( br.readLine() );
		
		a = new int[n];
		st = new StringTokenizer( br.readLine() );
		for( int i=0; i<n; i++ ) a[i] = Integer.parseInt( st.nextToken() );
		
		st = new StringTokenizer( br.readLine() );
		b = Integer.parseInt( st.nextToken() );
		c = Integer.parseInt( st.nextToken() );

		for( int i=0; i<n; i++ ) {
			a[i] -= b;	//총 감독관 수 뺀다.
			sum++;
			if( a[i] <= 0 ) continue;	//더이상 감독받을 학생이 없으면 다음 강의실이동
			
			if( a[i]%c == 0 ) sum += a[i]/c;	//학생수가 부감독관 감시수로 나머지가 0이면 나눗셈
			else sum += ( a[i]/c ) + 1;		//학생수가 부감독관 감시수보다 크거나 작을 경우 나누기 + 1
		}
		
		bw.write( sum + "\n" );
		bw.flush();
		bw.close();
		br.close();
	}
}

 

-파이썬

n = int(input())
a = list( map(int, input().split()) )
b, c = map(int, input().split())
sum = 0

for i in range( n ):
    a[i] -= b
    sum += 1
    if a[i]<=0:
        continue
    if a[i]%c != 0:
        sum += ( a[i]//c ) + 1
    else:
        sum += ( a[i]//c )
        
print( sum )
728x90
반응형
Comments