문제의 경우 무단 복제를 금지한다고 작성되어 있으므로 1206 번을 찾아보시면 될 것 같습니다 !
간단하게 요약하자면 다음과 같다.
2
의 시야를 확보해야 전망이 보이게 된다.#include<iostream>
#include <stdio.h>
#include <algorithm>
#include <queue>
using namespace std;
int main(int argc, char** argv)
{
int test_case;
int T;
//freopen("input.txt", "r", stdin);
int ary[1000];
for (int i = 1; i < 11; i++) {
int answer = 0;
cin >> T;
for (test_case = 0; test_case < T; ++test_case)
{
cin >> ary[test_case];
}
int max_h = 0;
for (int i = 2; i < T - 2; i++) {
max_h = max({ary[i - 1], ary[i - 2], ary[i + 1], ary[i + 2]});
if (ary[i] > max_h) answer += (ary[i] - max_h);
}
cout << "#" << i << " " << answer << endl;
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
문제를 보고나서 빌딩의 수가 크지 않다면 각 빌딩의 높이 배열만 있으면 충분하다고 생각했다.
→ 다행히 가로가 최대 1000
이라고 명시 되어 있다.
따라서 빌딩의 높이를 배열에 담고, 왼쪽 빌딩 2개와 오른쪽 빌딩 2개의 높이 중 최대 높이를 구해주었다. (max_h
)
현재 빌딩의 높이와 max_h
의 차이 (해당 빌딩에서 전망이 확보된 세대수) 를 answer
에 계속 더해 주면서 전망이 확보된 빌딩의 세대수를 더해주었다.
SW Academy
사이트를 통해 진행되기 때문에 해당 환경에 적응하기 위해 사용한 Visual Studio
적응이 제일 힘들었다 ^ .. ^