13398번 - 연속합 2
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으로 초기화하였습니다.
반례들을 확인해도 어디에서 문제가 생기는지 모르겠어서 이렇게 질문드립니다.
끝까지 읽어주셔서 감사합니다.
반례입니다.
3-1 -4 -3
답 : -1
@ha_ram
감사합니다ㅠㅠ dl[n]이 가장 큰 값을 갖고 있을거라고 착각해버렸네요...
덕분에 풀었습니다! 감사합니다!
댓글을 작성하려면 로그인해야 합니다.
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으로 초기화하였습니다.
반례들을 확인해도 어디에서 문제가 생기는지 모르겠어서 이렇게 질문드립니다.
끝까지 읽어주셔서 감사합니다.