728x90
728x90
풀이
간단한 구현 문제인 듯 합니다...,
양 쪽 끝 2개는 0층이기에 3번째부터
1. 왼쪽 2칸, 오른쪽 2칸 비교해서 크다? -> 2번 / 아니면 다음 층으로
2. 각 층에서 왼쪽2칸, 오른쪽2칸 중 뺀 것중에 가장 작은 것을 조망권 획득으로 계산.
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int arr[1001] = { 0, }; // 건물높이 저장
int main() {
// test_case = 10;
for (int i = 0; i < 10; i++) {
int cnt = 0,ans =0;
cin >> cnt; // 건물 개수
for (int j = 0; j < cnt; j++) {
int tmp;
cin >> tmp;
arr[j] = tmp;
}
for (int k = 2; k < cnt - 2; k++) {
if (arr[k - 1]<arr[k] && arr[k - 2]<arr[k] && arr[k + 1]<arr[k] && arr[k + 2]<arr[k]) {
// 양쪽 두칸보다 더 높을 경우에
ans += min(arr[k] - arr[k - 1], min( arr[k] - arr[k - 2], min(arr[k] - arr[k + 1], arr[k] - arr[k + 2])));
};
}
memset(arr, 0, sizeof(arr));
cout << "#" << i + 1 << " " << ans << endl;
}
return 0;
}
728x90
728x90
'Algorihtm > SWEA' 카테고리의 다른 글
C++ SWEA 3282. 0/1 Knapsack (0) | 2023.11.03 |
---|---|
C++ SWEA 1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2023.11.01 |
C++ SWEA 1989. 초심자의 회문 검사 (1) | 2023.10.29 |
C++ SWEA 1984. 중간 평균값 구하기 (0) | 2023.10.29 |
C++ SWEA 2001. 파리 퇴치 (1) | 2023.10.28 |