1일차 - View

108번뇌·2021년 6월 3일
#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;	
}
  1. max와 min다루기
  2. += 나 -=할 때 이 문제에서 초기화 =0 안하면 버그나온다!! 이거 못찾았었음.
    += 해주는 경우 처음 초기화를 해줘야한다.
  3. 이 문제의 논리는 좌측 2개 중 제일 큰거보다 크고, 우측 2개중 제일 큰거보다 크고
    연두색 건물은 = 배열높이 - max(좌측최대, 우측최대)
    라는 논리이다.
profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글