시퀀스를 확인하십시오(증가보다 엄격하게 감소 || 엄격하게 감소 || 엄격하게 증가)
n개의 정수 시퀀스, 즉 S = s1, s2, ..., sn이 주어집니다. S를 두 부분으로 나누는 것이 가능한지 계산하십시오. 첫 번째 부분은 엄격하게 감소하는 반면 두 번째 부분은 엄격하게 증가합니다.
참고: x > y일 때 x가 y보다 엄격하게 크다고 말합니다.
따라서 순증가 수열은 1 4 8이 될 수 있습니다. 그러나 1 4 4는 순증가 수열이 아닙니다.
즉, 숫자가 감소하는 순서대로 한 지점에서 증가하기 시작할 수 있습니다. 그리고 일련의 숫자가 증가하기 시작하면 더 이상 감소할 수 없습니다.
증가하는 숫자 또는 감소하는 숫자로만 구성된 시퀀스는 유효한 시퀀스입니다. 따라서 두 경우 모두 true를 인쇄하십시오.
참/거짓을 출력하면 됩니다. 시퀀스를 분할할 필요가 없습니다.
입력 형식:
1행 : 정수 'n'
2행 이후 : 'n'행에 'n'개의 정수(각 행에 단일 정수)
출력 형식 :
"true"또는 "false"(따옴표 제외)
제약 조건:
1 <= n <= 10^7
샘플 입력 1:
5
9
8
4
5
6
샘플 출력 1:
진실
샘플 입력 2:
삼
1
2
삼
샘플 출력 2:
진실
샘플 입력 3:
삼
8
7
7
샘플 출력 3:
거짓
샘플 형식 3에 대한 설명:
8 7 7은 엄격하게 감소하지 않으므로 출력값은 false입니다.
샘플 입력 4:
6
8
7
6
5
8
2
샘플 출력 4:
거짓
샘플 입력 4에 대한 설명:
시리즈는 다음과 같습니다.
8 7 6 5 8 2
먼저 엄격하게 감소하고 있습니다(8 7 6 5). 그런 다음 엄격하게 증가합니다(5 8). 그러나 다시 엄격하게 감소하기 시작합니다(8 2). 따라서 이 테스트 사례의 출력은 '거짓'입니다.
해결책
#include<iostream>
using namespace std;
int main() {
int n;
cin>>n;
bool a;
int count=0;
int num[n];
for(int i=0;i<n;i++)
{
cin>>num[i];
}
for(int i=0;i<n;i++)
{
if(num[i]>num[i+1])
{
a=true;
count++;
}
else
{
a=false;
break;
}
}
for(int i=count;i<n;i++)
{
if(num[i]<num[i+1])
{
a=true;
count++;
}
else
{
a=false;
break;
}
}
for(int i=count;i<n;i++)
{
if(num[i]<num[i+1])
{
a=true;
count++;
}
else
{
a=false;
break;
}
}
for(int i=count;i<n;i++)
{
if(num[i]>num[i+1])
{
a=true;
count++;
}
else
{
a=false;
break;
}
}
if(a==1)
{
cout<<"true";
}
else
{
cout<<"false";
}
}
suggest me a better approach to solve this problem
git
Reference
이 문제에 관하여(시퀀스를 확인하십시오(증가보다 엄격하게 감소 || 엄격하게 감소 || 엄격하게 증가)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/suryanshcode/check-the-sequence-strictly-decreasing-than-increasing-strictly-decreasing-strictly-increasing-1e1d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)