반응형
https://programmers.co.kr/learn/courses/30/lessons/42896
table[left_idx][right_idx] = left에서 idx만큼 빼내고, right에서 idx만큼 빼냈을 때의 최댓값
으로 점화식을 세운 것까지는 괜찮았는데,
조건에 맞게 table 값을 업데이트하는 코드를 작성하는 데 너무 오래 걸렸다.
index가 0부터 시작되다 보니, 초기값을 생성하는 데 꽤나 골치가 아팠어서.
결국 리스트 맨 앞에 초기값을 위해 insert(0, 0) 을 넣어서 해결했다.
1. 왼쪽 카드만 버릴 경우의 값, 왼쪽 오른쪽 둘 다 버릴 경우의 값 중 최댓값을 구한다
table[l_idx][r_idx] = max(table[l_idx-1][r_idx-1], table[l_idx-1][r_idx])
2. 이 값 중에서 오른쪽 카드만 버릴 수 있는 경우, 오른쪽 카드의 값을 더해준다.
if left[l_idx] > right[r_idx]: table[l_idx][r_idx] = max(table[l_idx][r_idx], table[l_idx][r_idx-1] + right[r_idx])
맨 마지막 값을 리턴하면 된다.
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] 백준 11403. 경로 찾기 (0) | 2020.02.24 |
---|---|
[Python] 백준 17406. 배열 돌리기 4 (0) | 2020.02.18 |
[Python] 프로그래머스. 지형 이동 (Level 4) (0) | 2020.02.15 |
[Python] 백준 13460. 구슬 탈출 2 (0) | 2020.02.14 |
[Python] 백준 2110. 공유기 설치 (0) | 2020.02.13 |