인프런 커뮤니티 질문&답변

최정은님의 프로필 이미지
최정은

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

23. 연속 부분 증가수열

질문있습니다.

해결된 질문

작성

·

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

최정은님의 프로필 이미지
최정은

작성한 질문수

질문하기