SWEA

SWEA [S/W 문제해결 기본] 1일차 - View - 1206 (c++)

Daekyue 2023. 11. 10. 22:53

[D3] [S/W 문제해결 기본] 1일 차 - View - 1206

문제 링크

출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do

 

#include <bits/stdc++.h>

using namespace std;

int row[1005];
int dx[4] = { -2, -1, 1, 2 };

int main(int argc, char** argv)
{
	
	for (int test_case = 1; test_case <= 10; ++test_case)
	{
		int N;
		cin >> N;

		for (int i = 0; i < N; i++)
			cin >> row[i];

		int ans = 0;
		for (int i = 2; i < N - 2; i++)
		{
			int see = row[i];
			for (int j = 0; j < 4; j++)
			{
				if (row[i] - row[i + dx[j]] <= 0)
				{
					see = 0;
					break;
				}
				else if (row[i] - row[i + dx[j]] < see)
					see = row[i] - row[i + dx[j]];
			}
			ans += see;
		}
		cout << "#" << test_case << " " << ans << "\n";
	}
	return 0;//정상종료시 반드시 0을 리턴해야합니다.
}

조망을 계산할 수 있는 방법이 어떤 것이 있을까 생각해 보았는데 범위 안에서 자신의 건물 - 주변 건물의 높이 값 중 가장 작은 것이 조망 값이라는 것을 알게 되었고 앞에서 두 칸과  뒤에서 두 칸을 뺀 범위에서 계산을 해서 조망 값을 다 더하여 출력하도록 만들었다