maxSum 오답때문에 질문드립니다. 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; } 9년 전
2개의 댓글이 있습니다. hyunhwan 우선 답을 출력할 때 개행문자 처리가 되질 않았습니다. 코드를 자세히 보진 않았지만, 제가 넣어본 무작위 테스트 케이스에 대해서는 정답이 아닌 답을 출력하는 것을 확인하였습니다. 참고로 다음의 예시에서는 6이 나와야 하는데, 4가 나오는 것으로 보입니다. 1 10 2 -1 2 -1 2 -1 2 -1 2 -1 9년 전 link jss LiBe님 테스트해주셔서 감사합니다. 위 문제를 수정하고 시도 했는데도 오답이 나오네요..ㅠ 테스트 케이스가 필요합니다.. 흑 ㅠ 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
jss
제가 생각한 테스트 케이스는 다 답이 맞는데 왜 계속 오답인지 모르겠습니다..ㅠ 도와주십시오..
구현은 입력받은 배열에서 인접하는 양수들끼리 음수들끼리 모두 취합한다음에
최대값을 비교해서 구했습니다..
9년 전