문제
풀이
- 배열을 순회하면서, 이웃한 배열들을 검사
- 한 건물의 조망권이 확보된 세대 갯수 = 해당 건물의 높이 - 양 옆으로 이웃한 네개의 건물중 가장 높은 건물 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(); // 각 건물에 대해 좌 우 2칸씩 중에서 가장 높은 층 파악 후, 해당 건물의 조망 확보 층 계산 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); } } }
# 결과
![](https://velog.velcdn.com/images/hj3175791/post/81f0f398-77a7-4fbd-ad2b-c561eedbae76/image.png)
'알고리즘' 카테고리의 다른 글
[백준, Java] 30802.웰컴 키트 (0) | 2024.09.20 |
---|---|
[백준, Java] 31403. A+B-C (0) | 2024.09.20 |
[SWEA/Java] 1824. 혁진이의 프로그램 검증 (0) | 2024.06.02 |
[SWEA/Java] 1226. [S/W 문제해결 기본] 7일차 - 미로1 (0) | 2024.06.02 |
[SWEA/Java] 1210. [S/W 문제해결 기본] 2일차 - Ladder1 (0) | 2024.06.02 |