dksdmssh1212   3년 전

dp[i][j] 2차원 디피로 해결하려고 했습니다.

예를 들어

i는 0부터 5의 값을 갖습니다.

i가 0일 때, 볼륨을 빼는 것만 가능하고,

1일 때는 더하는 것만 가능하고,

2일 때는 둘 다 불가능 하고

3, 4일 때는 더하는 것과 빼는 것 둘 다 가능 할때 각각 더하고, 뺴는 것을 놓았습니다.

그래서 j를 N만큼 순회할 때마다 재귀 dp로 해결하려고 했는데요

어떻게 해야 시간초과를 줄일 수 있는지 궁금합니다..

dp[i][j] = -1인 것들은 순회를 안하고 그냥 넘어가게 했는데 어떤 점에서 시간을 더 줄일 수 있을까요?

------------------------------------------------------- 수정 ---------------------------------------------

i는 0, 1 의 값을 갖도록 바꾸었습니다.

어떤 부분에서 반복적인 예시가 생기는지 잘 모르겠습니다..

dksdmssh1212   3년 전

제가 시간초과가 나는 이유를 알았습니다.

첫 번째 단계에서

S + V[0], S- V[0]

그 다음단계에서는

S+V[0] +- V[1], S - V[0] +- V[1]

..

그럼 만약 100까지의 곡에서는 

2의 100-1 승개의 케이스를 전부 다 고려해 줘야 하는 것 같습니다.

그래서 차라리 dp[i][j]에서

j를 음량으로 설정해 주고,

이전 단계에서 사용한 음량 dp[i-1]에 저장해서 해결했습니다.

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