• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

질문있습니다.

21.07.08 10:23 작성 조회수 117

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인데 이 번호의 인덱스는 없습니다.