안녕하세요. 오늘은 알프수인지 확인할 거예요.
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";
}
감사합니다.