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