알고리즘/SW Expert Academy

[D5] 9015. 배열의 분할

혬혬 2020. 3. 18. 20:08
728x90

각 시점마다 오름차순인지 내림차순인지 확인해서 이전꺼와 다르다면 새로운 묶음으로 본다는 것에서 포인트를 얻어서 풀었다. 

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
int list[100010];
int signal = -1;
void search_signal(int i) {
	if (list[i] < list[i+1]) {
		signal = 1;
	}
	else if (list[i] > list[i+1]) {
		signal = 2;
	}
	else {
		signal = 0;
	}
}
int main(void) {
	freopen("inp.inp", "r", stdin);
	freopen("out.out", "w", stdout);
	
	int tc = 0;
	cin >> tc;
	for (int q = 0; q < tc; q++) {
		int n = 0;
		cin >> n;
		for (int i = 0; i < n; i++) {
			cin >> list[i];
		}
		int count = 1;
		search_signal(0);
		for (int i = 1; i < n-1; i++) {

			if (signal == 0) {
				search_signal(i);
			}
			if (list[i] < list[i+1]) {
				if (signal != 1) {
					count++;
					search_signal(++i);
				}
			}
			else if (list[i] > list[i+1]) {
				if (signal != 2) {
					count++;
					search_signal(++i);
				}
			}
		}
		cout << "#"<<q+1<<" "<<count<<endl;
	}



	return 0;
}

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW6NEs5akJADFAVX&categoryId=AW6NEs5akJADFAVX&categoryType=CODE#

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

728x90