Algorithm/Cases-Study
SWEA-1206 View
Xi_kor
2021. 3. 25. 20:40
가로길이를 입력받고, 그 가로길이만큼을 배열에 입력받은 뒤 좌로 두칸, 우로 두칸을 검사하면서 좌 우의 빌딩들이 해당 빌딩보다 작은지 검사했다. (같거나 큰 경우 해당 열에서는 조망권이 확보되지 않는다.) 좌로 두칸, 우로 두칸의 빌딩들 중 가장 큰 값을 구해 해당 열의 빌딩에서 빼서 최종 값에 더해주었다.
#include <iostream>
#include <queue>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
int a[1010];
int main(){
for(int T=1; T<=10; T++){
int n;
cin>>n;
for(int i=0; i<n; i++){
cin>>a[i];
}
int sum=0;
for(int i=2; i<n-2; i++){
int val=a[i];
int status=0;
int maximum=-1;
for(int j=i-1; j>=i-2; j--){
if(a[j]<val){
if(a[j]>maximum) maximum=a[j];
}
else status=1;
}
for(int j=i+1; j<=i+2; j++){
if(a[j]<val){
if(a[j]>maximum) maximum=a[j];
}
else status=1;
}
if(status==1) continue;
sum+=(val-maximum);
//cout<<sum<<" ";
}
cout<<"#"<<T<<" "<<sum<<'\n';
}
return 0;
}