코테 연습 with Java - 3

아이모·2022년 10월 28일
0

코테

목록 보기
9/15
  1. [S/W 문제해결 기본] 1일차 - View

<풀이>
왼쪽 부분 비교 후 오른쪽 부분을 비교하여 왼쪽과 오른쪽의 최대높이보다 높거나 같은 부분만 살아남는다.

for(int test_case = 1; test_case <= T; test_case++)
		{
            HashMap<Integer, Integer> buildingMap = new HashMap<Integer, Integer>();
            int result = 0;
			int buildingNumber = sc.nextInt();
            int [] buildings = new int[buildingNumber];
            for(int i = 0; i < buildingNumber; i++){
            	buildings[i] = sc.nextInt();              
            }
            for(int i = 0; i < buildingNumber-2; i++){
            	if(buildings[i] > Math.max(buildings[i+1], buildings[i+2]))
                    buildingMap.put(i, buildings[i] - Math.max(buildings[i+1], buildings[i+2]));
            }
            for(int i = buildingNumber-1; i >= 2; i--){
            	if(buildings[i] > Math.max(buildings[i-1], buildings[i-2])){
                    if(buildingMap.containsKey(i)){
                    	result += Math.min(buildingMap.get(i), buildings[i] - Math.max(buildings[i-1], buildings[i-2]));
                    }
                }
            }
            
            System.out.println("#"+test_case+" "+result);
		}
	}
profile
데이터로 보는 실력

0개의 댓글