#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main(int argc, char** argv)
{
int ileft;
int iright;
vector<int> vResult;
for (int i = 0; i < 10; i++)
{
int iResult=0;
int iTemp1;
int iTemp2;
cin >> iTemp1;
vector<int> vTemp;
for (int j = 0; j < iTemp1; j++)
{
cin >> iTemp2;
vTemp.emplace_back(iTemp2);
}
for (int j = 2; j < iTemp1 - 2; j++)
{
ileft = max(vTemp[j - 2], vTemp[j - 1]);
iright = max(vTemp[j + 2], vTemp[j + 1]);
if (vTemp[j] > ileft && vTemp[j]>iright)
{
iResult+=(vTemp[j]- max(ileft, iright));
}
}
vResult.push_back(iResult);
cout << "#" << i+1 << " " << vResult[i] << endl;
}
return 0;
}
- max와 min다루기
- += 나 -=할 때 이 문제에서 초기화 =0 안하면 버그나온다!! 이거 못찾았었음.
+= 해주는 경우 처음 초기화를 해줘야한다.
- 이 문제의 논리는 좌측 2개 중 제일 큰거보다 크고, 우측 2개중 제일 큰거보다 크고
연두색 건물은 = 배열높이 - max(좌측최대, 우측최대)
라는 논리이다.