※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 21965번 문제인 드높은 남산 위에 우뚝 선이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/21965 

 

21965번: 드높은 남산 위에 우뚝 선

입력으로 주어진 수열 $A$가 산이면 "YES"를, 산이 아니면 "NO"를 출력한다.

www.acmicpc.net

수열 A를 앞에서부터 읽으면서, 처음으로 증가하지 않는 지점을 찾아내고 그 이후로 마지막 항까지 계속 이 수열이 감소하는지를 확인하는 것으로 문제를 해결할 수 있다.

 

연속한 두 항이 같다면 산이 아님에 유의해 구현하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

bool inc = 1;
int old = 0;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N; cin >> N;
	while (N--) {
		int x; cin >> x;
		if (x == old) {
			cout << "NO";
			return 0;
		}
		if (x > old) {
			if (!inc) {
				cout << "NO";
				return 0;
			}
			else old = x;
		}
		else {
			if (inc) {
				inc = 0;
			}
			old = x;
		}
	}

	cout << "YES";
}
728x90

+ Recent posts