Google Kickstart 2020 Round B의 첫번째 문제 Bike Tour 입니다.
총 n개의 체크포인트가 있고, 1번부터 n번까지 순서대로 방문해야 하며
i번째의 체크포인트의 높이는 Hi,
피크는 직전 체크포인트 높이와 직후 체크포인트 높이보다 높아야 하며
첫번째 체크포인트와 마지막 체크포인트는 피크가 아닙니다.
이 때, 피크의 개수를 구하는 문제입니다
C++ 를 사용한 제 풀이입니다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <numeric>
using namespace std;
int n;
void solve() {
int count = 0;
cin >> n;
vector<int> a(n, 0);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
for (int i = 1; i < n - 1; ++i) {
if (a[i - 1] < a[i] && a[i] > a[i + 1]) ++count;
}
cout << count << "\n";
return;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
for (int i = 1; i <= t; ++i) {
cout << "Case #" << i << ": ";
solve();
}
}
그냥 연달에 3개 a[i - 1], a[i], a[i + 1] 를 비교해서 카운트를 올려주는 방식으로 해결했습니다.
첫번째 문제는 역시 그렇게 어렵진 않네요
반응형
댓글