반응형
출처: https://www.acmicpc.net/problem/13458
문제에서 제시하는 class의 구성원은 다음과 같다.
응시자 수 A명이 주어졌을 때, 총 감독관 1명과 여러명의 부감독관이
서로 겹치지 않게 수험생을 관리해야
최소 인원으로 구성된 감독관으로 진행될 수 있다.
이때, 총 감독관이 1명이 무조건 있고, 부감독관이 몇 명이 되는지 구해야 한다.
Input
3
3 4 5
2 2
Output
7
[0] 수험생 3명 - 총감독관 1명이 2명 mark / 부감독관 1명이 1명 mark
[1] 수험생 4명 - 총감독관 1명이 2명 mark / 부감독관 1명이 2명 mark
[2] 수험생 5명 - 총감독관 1명이 2명 mark / 부감독관 1명이 2명 mark + 다른 부감독관 1명이 1명 mark
→ 총감독관 3명 + 부감독관 4명을 합쳐서 7명의 감독관 최소인원이 나온다.
각 class마다 먼저 총감독관이 mark할 수 있는 인원수를 주어진 수험생에서 빼고
남은 인원수를 mark 하기 위해 부감독관이 몇 명 투입되는지 도출
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
BigInteger[] arrNum = new BigInteger[T];
for(int i=0; i<T; i++) {
arrNum[i] = sc.nextBigInteger();
}
BigInteger mainNum = sc.nextBigInteger();
BigInteger subNum = sc.nextBigInteger();
BigInteger result = new BigInteger("0");
BigInteger one = new BigInteger("1");
BigInteger zero = new BigInteger("0");
int idx = 0;
while(true) {
arrNum[idx] = arrNum[idx].subtract(mainNum);
result = result.add(one);
if(arrNum[idx].compareTo(zero) >= 1) {
if(arrNum[idx].remainder(subNum).equals(zero)) {
result = result.add((arrNum[idx].divide(subNum)));
}
else {
result = result.add( (arrNum[idx].divide(subNum)).add(one) );
}
arrNum[idx] = zero;
}
if(arrNum[idx].compareTo(zero) <= 0) {
idx++;
if(idx == arrNum.length)
break;
}
}
System.out.println(result);
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 2357 최솟값과 최댓값 (0) | 2021.02.20 |
---|---|
[BOJ] 백준 11505 구간 곱 구하기 (0) | 2021.02.20 |
[BOJ] 백준 2531 회전초밥 (0) | 2021.02.20 |
[BOJ] 백준 2805 나무 자르기 (0) | 2021.02.20 |
[BOJ] 백준 6549 히스토그램에서 가장 큰 직사각형 (0) | 2021.02.20 |
댓글