티스토리 뷰
1) 생각
시험 장의 수와 각 시험장의 인원 그리고 대표감독이 관리할 수 있는 학생수 B와 부 감독이 관리 할 수 있는 학생수 C를 준다. 대표감독은 각 시험장마다 1명만 있을 수 있고 부 감독은 여러명 있을 수 있다. 이때 필요한 최소의 감독수를 구하여라.
처음 생각
백준에 있는 삼성 SW 역량 테스트 기출문제이다. 정답 비율이 23%인데 풀고나니 왜 23%인지를 잘 모르겠다.
▶ 범위가 문제였다고해도 50%는 거뜬히 넘어야 될 것같다. 백준 서버에서 잠시동안 채점 오류가 있었던게 아닌지 조심스럽게 생각해본다.
다음 생각
대표감독은 1명 있을 수 있고 부 감독은 여러명 있을 수 있다. 대표 감독은 무조건 있어야 하므로 무조건 처음에 계산을 해준다.
다다음 생각
대표 감독이 처리할 수 있는 학생수를 제외하고 나서 0명 이하인지를 확인한다. 0명 이하라면 부감독이 있을 필요가 없으므로 다음 시험장으로 넘어간다.
▶만약 학생들이 남아있다면 부감독은 여러명 있을 수 있으므로 남은 학생을 부감독이 관리할 수 있는 학생수인 C로 나머지 연산을 진행해본다. 나머지가 0이라면 딱 맞아 떨어지므로 남은학생수/C의 수만큼 최소 감독수를 늘려준다.
▶만약 나머지가 0이 아니라면 (남은학생 수/C) +1 만큼 최소 감독수를 늘려준다.
2) 방안
1) 시험장의 개수가 최대 1,000,000이고 학생수도 시험장당 최대 1,000,000이므로 최악의 경우 백만 * 백만 = 1조 이므로 최소 감독수 결과값을 int형이 아닌 long 형으로 선언해 주었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int n,B,C; static int[] arr; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); n = Integer.parseInt(br.readLine()); arr = new int[n]; StringTokenizer st =new StringTokenizer(br.readLine()); for(int i=0;i<n;i++) arr[i] = Integer.parseInt(st.nextToken()); st = new StringTokenizer(br.readLine()); B = Integer.parseInt(st.nextToken()); // 총 감독관 관리가능 수(한 명) C = Integer.parseInt(st.nextToken()); // 부 감독관 관리가능 수(여러 명) System.out.println(solve()); } private static long solve() { long result = 0; for(int i=0;i<n;i++) { // 총 시험 감독관 집어 넣기. int t = arr[i]-B; result++; if(t<=0) continue; // 부 감독관 넣기. // 1. 부 감독관이 딱 맞출 수 있냐, 2. 남을 경우 1명더 넣자. if(t%C==0) { result += t/C; }else { result += t/C; result++; } } return result; } } | cs |
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 12813번 이진수 연산(Java) (0) | 2018.08.29 |
---|---|
[백준] 1018번 체스판 다시 칠하기 (0) | 2018.08.28 |
[백준] 1237번 정ㅋ벅ㅋ (0) | 2018.08.27 |
[백준] 11723번 집합 (0) | 2018.08.27 |
[백준] 1987번 알파벳 (0) | 2018.08.27 |
- Total
- Today
- Yesterday