[SW Expert Academy]
SW Expert Academy [S/W 문제해결 기본] 1일차 - View [C++]
경우42
2024. 3. 17. 14:39
반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh&
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
#문제 해결 방법
앞 뒤로 두칸은 0으로 채워지기 때문에
전체 순회를 하면서 현재칸과 앞뒤 +- 2칸과의 차이가 0 이상이라면 이 차이만큼
결과값에 더해주면 된다.
#전체 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
for (int i = 1; i <= 10; i++) {
int N;
cin >> N;
vector<int> buildings(N);
for (int j = 0; j < N; j++) {
cin >> buildings[j];
}
int count = 0;
for (int k = 2; k < N - 2; k++) {
int left1 = buildings[k] - buildings[k - 1];
int left2 = buildings[k] - buildings[k - 2];
int right1 = buildings[k] - buildings[k + 1];
int right2 = buildings[k] - buildings[k + 2];
if (left1 > 0 && left2 > 0 && right1 > 0 && right2 > 0) {
int minView = min(min(left1, left2), min(right1, right2));
count += minView;
}
}
cout << count << '\n';
}
return 0;
}
반응형