maxSum 오답때문에 질문드립니다.

  • User Avatar
    jss

    제가 생각한 테스트 케이스는 다 답이 맞는데 왜 계속 오답인지 모르겠습니다..ㅠ 도와주십시오..

    구현은 입력받은 배열에서 인접하는 양수들끼리 음수들끼리 모두 취합한다음에
    최대값을 비교해서 구했습니다..

    #include <stdio.h>
    #include <stdlib.h>
    
    int preSort(int* ar,int len);
    
    int main(void){
        int *arr;
        int maxSum,i;
        int len=0;
        int cnt=0;
        int sum=0;
        int cur=0;
        int con=0;
        
        scanf("%d",&cnt);
        while(cnt>0){
            
            scanf("%d",&len);
            arr=(int*)malloc(sizeof(int)*len);
            
            for(i=0;i<len;i++){
                scanf("%d",&arr[i]);
            }
            maxSum=0;
            sum=0;
            con=0;
            len=preSort(arr,len);           
            
            for(i=0;i<len;i++){
                if(i==0 && arr[i]<0)
                    continue;
                if(arr[i]>=maxSum)
                    maxSum=arr[i];
    
                sum+=arr[i];
                con++;
    
                if(con%3==0 && sum < maxSum){
                    if(sum<arr[i])
                    sum=arr[i];
                    else
                    con=0;
                }
                if(sum >= maxSum)
                    maxSum=sum;
    
            }
                
    //      for(i=0;i<len;i++){
    //          printf("%d ",arr[i]);
    //      }
    //      printf("\n");
            
            printf("%d\n",maxSum);
            free(arr);
            cnt--;
        }
        return 0;
    }
    
    int preSort(int* ar,int len){
        int temp=0,i=0;
        int cur=0;
        temp = ar[0];
            for(i = 1 ; i < len ; i ++ ){
                if(ar[i] <= 0 && temp <= 0 ){
                    temp+=ar[i];
                }else if(ar[i] >= 0 && temp >= 0 ){
                    temp+=ar[i];    
                }else{
                    ar[cur++]=temp;
                    temp=ar[i];
                }
            }
            ar[cur++]=temp;
        return cur;
    }
    
    

    11년 전
2개의 댓글이 있습니다.
  • User Avatar
    hyunhwan
    1. 우선 답을 출력할 때 개행문자 처리가 되질 않았습니다.
    2. 코드를 자세히 보진 않았지만, 제가 넣어본 무작위 테스트 케이스에 대해서는 정답이 아닌 답을 출력하는 것을 확인하였습니다. 참고로 다음의 예시에서는 $6$이 나와야 하는데, $4$가 나오는 것으로 보입니다.


    ~~~
    1
    10
    2 -1 2 -1 2 -1 2 -1 2 -1
    ~~~


    11년 전 link
  • User Avatar
    jss

    LiBe님 테스트해주셔서 감사합니다. 위 문제를 수정하고 시도 했는데도 오답이 나오네요..ㅠ 테스트 케이스가 필요합니다.. 흑 ㅠ


    11년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.