해결된 질문
작성
·
161
0
23번 연속 부분 증가수열 문제의 코드를 다음과 같이 작성해보았는데 채점프로그램을 돌려보니 틀린 부분이 있다고 나옵니다. 어디서 틀린건가요?
#include<stdio.h>
int main(){
//freopen("input.txt", "rt", stdin);
int n, num[100000], max=-2147000000, cnt=1, i;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &num[i]);
}
for(i=0; i<n; i++){
if(num[i]<=num[i+1]) cnt++;
else{
if(max<cnt) max=cnt;
cnt=1;
}
}
printf("%d\n", max);
return 0;
}
답변 1
1
안녕하세요^^
5
1 2 3 4 5
이런 입력이 들어오면
for(i=0; i<n; i++){
if(num[i]<=num[i+1]) cnt++;
else{
if(max<cnt) max=cnt;
cnt=1;
}
}
위에 for문에서 if조건이 계속 참이되어 else 쪽으로 가지 않습니다. 그리고 for문의 마지막 단계에서 i가 n-1이 됬을 때 i+1번째 인덱스는 없습니다. int num[100000]으로 잡으면 인덱스 번호는 0부터 99999까지 생깁니다.
3번 테스트케이스 입력은 입력의 크기가 100000입니다. 위에 for문으로 하면 i는 99999까지 반복합니다. 그러면 i+1은 100000인데 이 번호의 인덱스는 없습니다.