2018년 4월 10일 화요일

[C++] Samsung SW Expert Academy 1206. [S/W 문제해결 기본] 1일차 - View

/*
This problem looks difficult first, but actually it's very simple.

Just check if current index is higher than both two sides.


*/


#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
int myView(int n, vector<int> arr);

int main() {
    int n,input;
    vector<int> arr;
for(int i=0;i<10;i++) {
    cin >> n;
        for(int j=0;j<n;j++) {
            cin >> input;
            arr.push_back(input);
        }
        int result = myView(n,arr);
        cout << "#" << i+1 << " " << result << endl;
        arr.clear();
    }
    return 0;
}

int myView(int n, vector<int> arr) {
  int leftMax, rightMax;
    int differ;
    int result = 0;
for(int i=2;i<n-2;i++) {
leftMax = max(arr[i-2],arr[i-1]);
        rightMax = max(arr[i+1],arr[i+2]);
        differ = arr[i] - max(leftMax,rightMax);
        if(differ > 0) {
        result += differ;
            i += 2;
        }
    }
   
    return result;
}

댓글 없음:

댓글 쓰기