처음에는 2*2 배열 만들어서 해당 부분 1로 채우고 조건 비교하는 거라고 생각했는데 더 효율적으로 짤 수 있었음
1차원 배열에 건물 높이만 저장하고 [i-2, i-1, i, i+1, i+2] 일 때, i가 max이고, max에서 나머지 4개 중 최댓값을 빼는 게 조망권 확보된 세대 수 !!
#include<iostream>
using namespace std;
int main(int argc, char** argv) {
int test_case;
int T;
//cin >> T;
T = 10;
for (test_case = 1; test_case <= T; ++test_case) {
int h[1000] = { 0 };
int num;
int ans = 0;
cin >> num;
for (int i = 0; i < num; i++) {
int tmp;
cin >> tmp;
h[i] = tmp;
}
for (int i = 0; i < num; i++) {
if (i == 0 || i == 1 || i == i - 1 || i == i - 2) continue;
if (h[i] > h[i - 1] && h[i] > h[i - 2] && h[i] > h[i + 1] && h[i] > h[i + 2]) {
int max = h[i - 2];
if (h[i - 1] > max)
max = h[i - 1];
if (h[i + 1] > max)
max = h[i + 1];
if (h[i + 2] > max)
max = h[i + 2];
ans += h[i] - max;
}
}
cout << "#" << test_case << " " << ans << '\n';
}
return 0;
}