문제 >> 1206. [S/W 문제해결 기본] 1일차 - View


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
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
 
public class Solution {
    public static void main(String[] args) {
        
        Scanner s = new Scanner(System.in);
        
        for(int tc=1;tc<=10;tc++) {
            int n = s.nextInt();
            int[] map = new int[n];
            
            for(int i=0;i<n;i++) {
                map[i]=s.nextInt();
            }
            
            int ans = 0;
            for(int i=2;i<map.length-2;i++) {
 
                int[] arr = new int[4];
                arr[0= map[i-1];
                arr[1= map[i-2];
                arr[2= map[i+1];
                arr[3= map[i+2];
                Arrays.sort(arr);
                if(arr[3]<map[i]) {
                    ans += (map[i]-arr[3]);
                }
            }
            System.out.println("#"+tc+" "+ans);
        }
    }
}
 
cs




빌딩의 옥상에 서있는 '나'를 기준으로 좌우로 두칸 거리에 있는 빌딩들의 높이와 비교 해본다.  




4곳 모두 (좌로 1칸, 2칸 // 우로 1칸, 2칸) 본인보다 높이가 낮다면, (현재 빌딩 높이 - 4곳중 최대높이) 가 내가 서있는 빌딩의 확보된 조망권일 것이다.



각각의 빌딩의 높이를 입력받은 배열 map 을 방문하면서


좌우로 2칸 안에 위치한 빌딩의 높이들을 arr이라는 배열에 담아주고 sort 했다. 


arr의 최대 값이 현재 빌딩의 높이보다 낮다면, (현재 빌딩의 높이 - arr의 max) 가 현재 빌딩의 조망권이다..



+ Recent posts