알프수 (백준 23886)

코딩생활·2023년 12월 16일
0

백준문제풀이

목록 보기
119/308

안녕하세요. 오늘은 알프수인지 확인할 거예요.

문제

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

아이디어

이 세가지 조건만 확인하면 됩니다.
1. 인접한 두 값이 같나?
2. 인접한 두 차이의 부호는 같은데 값은 다르나?
3. 시작할때 감소하거나 끝날때 증가하나?
이 셋중 하나라도 만족한다면 NON ALPSOO를 출력해주면 됩니다.

소스코드

#include <iostream>
#include <string>
using namespace std;

int main(void)
{
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	string s;
	int len, i;

	cin >> s; len = s.length();
	for (i = 1; i < len; i++)
	{
		if (s[i - 1] == s[i]) //평지
		{
			cout << "NON ALPSOO";
			return 0;
		}
	}

	for (i = 2; i < len; i++)
	{
		int x = s[i - 1] - s[i - 2], y = s[i] - s[i - 1];
		if (x * y > 0 && x != y) //x,y가 같은 부호 (양,음)를 가지고 있는데 값이 다른경우
		{
			cout << "NON ALPSOO";
			return 0;
		}
	}

	if (s[1] - s[0] < 0 || s[len - 1] - s[len - 2]>0) //시작할때 감소 or 끝날때 증가
	{
		cout << "NON ALPSOO";
		return 0;
	}

	cout << "ALPSOO";
}


감사합니다.

0개의 댓글