문제
문제 바로가기
풀이
- 배열을 순회하면서, 이웃한 배열들을 검사
- 한 건물의 조망권이 확보된 세대 갯수 = 해당 건물의 높이 - 양 옆으로 이웃한 네개의 건물중 가장 높은 건물 OR 0
- 배열 인덱싱 에러만 잘 처리하면 쉽게 풀리는 문제
코드
import java.util.*;
import java.io.FileInputStream;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
for(int test_case = 1; test_case <= 10; test_case++)
{
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) arr[i] = sc.nextInt();
int answer = 0;
for (int i = 0; i < n; i++){
int nearbyHeight = 0;
if (i-2 >= 0 && nearbyHeight < arr[i-2]) nearbyHeight = arr[i-2];
if (i-1 >= 0 && nearbyHeight < arr[i-1]) nearbyHeight = arr[i-1];
if (i+1 <= n-1 && nearbyHeight < arr[i+1]) nearbyHeight = arr[i+1];
if (i+2 <= n-1 && nearbyHeight < arr[i+2]) nearbyHeight = arr[i+2];
answer += Math.max(arr[i] - nearbyHeight, 0);
}
System.out.printf("#%d %d\n", test_case, answer);
}
}
}
결과
