ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준[자바][13458 시험감독]
    코딩/알고리즘 2018. 10. 13. 19:37

    흠... 좀 고생좀 했다,,

    생각못한 반례가 하나 있었다

    일단 막 짜려하니까 힘들어서 

    조건을 생각해봤는데 

    일단 이문제는 총감독관이 배치가 되야하니 

    처음에 무조건 뺏다.

    거기서 남은 학생수에 대해서 분기점을 나눴는데

    코드를 보아하니 훨씬 간단하게 푼 사람들이 수두룩 하다..

    시뮬레이션 문제는 좀 더 열심히 풀어야겠다 ㅎㅎ

     
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class backjoon_13458_시험감독 {
    	static long N, A,B, C;
    	static ArrayList test_Room = new ArrayList();
    	static long viewer_Number = 0;
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		//System.out.println(999995%7);
    		N = sc.nextLong();
    		for(int i = 0 ; i < N ; i++) {
    			test_Room.add(sc.nextLong());
    		}
    		B = sc.nextLong();
    		C = sc.nextLong();
    		solve();
    		System.out.println(viewer_Number);
    	}
    	public static void solve() {
    		
    		for(int i = 0 ; i < N ; i++) {
    			long student = test_Room.get(i);
    			if(student == 0 ) {
    				continue;
    			}
    			// 총  감독관 
    			student -= B;
    			viewer_Number += 1;
    			if(student == 0 || student < 0 ) {
    				continue;
    			}
    		
    			//남은 학생이 부감독관 감시수 보다 클때 
    			if( student > C ) {
    				int calDivide = (int) ( student / C );
    				int calModuler = (int) ( student % C) ;
    				//나누어 떨어진다면 
    				if(calModuler == 0 ) {
    					viewer_Number += calDivide;
    				}
    				else {
    				viewer_Number += calDivide +1;	
    				}
    				continue;
    			}
    			//남은 학생이 부감독관 감시수 보다 작을 때 
    			if( student < C ) {
    				viewer_Number += 1;
    				continue;
    			}
    			//남은 학생이 부감독관 감시수랑 같을 때 
    			if( student == C ) {
    				viewer_Number += 1;
    				continue;
    			}
    			
    		}
    	}
    	
    }
    
    


    댓글

Designed by Tistory.