티스토리 뷰
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12913
풀이
- 해당 문제는 DP로 풀 수 있음
- 이전 인덱스의 같은 위치의 값은 사용이 불가능하니 해당 값을 제외한 나머지 값들중 최대 값을 고르고 더해서 저장한다.
- 즉 [index][0] 은 [index][1]~[3] 중 최대값에 land[index-1][0]값을 더한 값이 된다.
- 마지막 인덱스까지 구하면 4개의 합계가 나오니 그중 최대값을 반환하면 된다.
전체코드
import Foundation
func solution(_ land:[[Int]]) -> Int{
let len: Int = land.count
var arr: [[Int]] = [[Int]](repeating: [Int](repeating: 0, count: 4), count: len+1)
for (idx,nums) in land.enumerated() {
arr[idx+1][0] = max(max(arr[idx][1],arr[idx][2]),arr[idx][3]) + nums[0]
arr[idx+1][1] = max(max(arr[idx][0],arr[idx][2]),arr[idx][3]) + nums[1]
arr[idx+1][2] = max(max(arr[idx][0],arr[idx][1]),arr[idx][3]) + nums[2]
arr[idx+1][3] = max(max(arr[idx][0],arr[idx][1]),arr[idx][2]) + nums[3]
}
return max(max(max(arr[len][0],arr[len][1]),arr[len][2]),arr[len][3])
}'PS > 문제 풀이' 카테고리의 다른 글
| [프로그래머스/Swift] 49993번 - 스킬트리 (0) | 2025.02.10 |
|---|---|
| [프로그래머스/Swift] 154539번 - 뒤에 있는 큰 수 찾기 (0) | 2025.02.09 |
| [프로그래머스/Swift] 92335번 - k진수에서 소수 개수 구하기 (0) | 2025.02.07 |
| [프로그래머스/Swift] 84512번 - 모음사전 (0) | 2025.02.06 |
| [프로그래머스/Swift] 49994번 - 방문길이 (0) | 2025.02.05 |
