반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스(Lv.2) - 땅따먹기 문제를 풀었습니다.
목차
Github
문제 링크
풀이
이 문제는 DP로 풀 수 있는 문제입니다.
현재와 다음 합의 최댓값을 모두 저장해서 마지막에는 마지막 배열의 최댓값을 출력하면 됩니다.
배운 점
그래서 저는 3중 반복문을 이용했는데요.
다른 사람의 풀이를 보니 열의 개수가 4로 고정되어 있기 때문에 굳이 반복을 하지 않고 하드 코딩으로 풀 수 있었구나라는 걸 알 수 있었습니다.
많이 차이는 나지 않겠지만 코드가 훨씬 짧아지니 이 문제에 한해서는 적절한 풀이 방법으로 보였습니다.
어떨 때는 하드 코딩이 적절한 방법이 될 수 있겠다는 생각을 했습니다.
전체 코드
import Foundation
func solution(_ land:[[Int]]) -> Int{
var answer = 0
var sums: [Int] = land[0]
for index in 1..<land.count {
var tmpSums: [Int] = sums
for i in 0..<4 {
for j in 0..<4 {
if i != j {
tmpSums[i] = max(tmpSums[i], land[index][i] + sums[j])
}
}
}
sums = tmpSums
}
answer = sums.max()!
return answer
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형