제가 시간초과가 나는 이유를 알았습니다.
첫 번째 단계에서
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]에 저장해서 해결했습니다.
1495번 - 기타리스트
제가 시간초과가 나는 이유를 알았습니다.
첫 번째 단계에서
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]에 저장해서 해결했습니다.
댓글을 작성하려면 로그인해야 합니다.
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 의 값을 갖도록 바꾸었습니다.
어떤 부분에서 반복적인 예시가 생기는지 잘 모르겠습니다..