-
[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View c++Coding Test/SW Expert Academy 2022. 11. 19. 19:11728x90
- 문제
왼쪽과 오른쪽으로 창문을 열었을 때, 양쪽 모두 거리 2 이상의 공간이 확보될 때 조망권이 확보된다고 말한다.
빌딩들에 대한 정보가 주어질 때, 조망권이 확보된 세대의 수를 반환하는 프로그램을 작성하시오.- 문제 해결
"맨 왼쪽 두 칸과 맨 오른쪽 두 칸에 있는 건물은 항상 높이가 0이다."
라는 조건을 보고 (기준 index +- 2), (기준 index +-1) 값을 비교하여 풀어야 겠다고 판단했다.
기준 값이 비교 값보다 크다면, 비교 값들 중 max값을 찾아 (기준 값 - 비교 값) 을 하면 답을 구할 수 있다.
#include<iostream> #include <vector> #include <algorithm> using namespace std; int main(int argc, char** argv) { int test_case; int T = 10; for(test_case = 1; test_case <= T; ++test_case) { int n = 0; cin >> n; vector<int> vec(n , 0); for(int i = 0; i < n; i++){ cin >> vec[i]; } int result = 0; for(int i = 2; i < vec.size() - 2; i++){ int nMax = INT8_MIN; if( vec[i-2] < vec[i] && vec[i-1] < vec[i] && vec[i+1] < vec[i] && vec[i+2] < vec[i]){ nMax = max( max(vec[i-2], vec[i-1]), max( vec[i+1], vec[i+2] ) ); result += ( vec[i] - nMax ); } } cout << "#" << test_case << " " << result << endl; } return 0; }
728x90'Coding Test > SW Expert Academy' 카테고리의 다른 글
[SWEA] 15230. 알파벳 공부 c++ (0) 2022.11.19 [SWEA] 체스판 위의 룩 배치 c++ (0) 2022.11.19 [SWEA] 1946. 간단한 압축 풀기 c++ (0) 2022.11.18 [SWEA] 1948. 날짜 계산기 c++ (0) 2022.11.18 [SWEA] 1954. 달팽이 숫자 c++ (0) 2022.11.18