legendmic2   3년 전

DP를 이용하여,

dl[i] : a[1] ~ a[i]에서의 최대합

dr[i] : a[i] ~ a[n]에서의 최대합

을 구하고

maxSum = INT_MIN 으로 초기화 한 후

maxSum = max(maxSum, dl[i-1] + dr[i+1]); 의 식을 통해 구하는 코드입니다.


질문게시판의 반례들은 다음과 같았습니다.

- 입력값이 1개일때의 오류 : if(n==1)로 구분하여 출력하도록 했습니다.

- 배열 사이즈가 넉넉치 못해서 틀렸을 가능성 : 상수 MAX를 100050으로 넉넉히 두었습니다.

- maxSum(다른 질문글들에선 res, sum, max 등)을 0으로 초기화하여 생긴 문제 : INT_MIN으로 초기화하였습니다.

반례들을 확인해도 어디에서 문제가 생기는지 모르겠어서 이렇게 질문드립니다.

끝까지 읽어주셔서 감사합니다.

ha_ram   3년 전

반례입니다.

3
-1 -4 -3

답 : -1

legendmic2   3년 전

@ha_ram

감사합니다ㅠㅠ dl[n]이 가장 큰 값을 갖고 있을거라고 착각해버렸네요...

덕분에 풀었습니다! 감사합니다!

댓글을 작성하려면 로그인해야 합니다.