본문 바로가기
알고리즘

알고리즘 스터디

by COCO1337 2020. 7. 28.

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] 를 비교해서 카운트를 올려주는 방식으로 해결했습니다.

첫번째 문제는 역시 그렇게 어렵진 않네요

반응형

'알고리즘' 카테고리의 다른 글

알고리즘 스터디(미완)  (0) 2020.07.30
알고리즘 스터디  (0) 2020.07.29
알고리즘 스터디  (0) 2020.07.23
알고리즘 스터디  (0) 2020.07.22
알고리즘 스터디  (0) 2020.07.20

댓글