프로그래머스 LV2. 땅따먹기
✅ 프로그래머스 LV2. 땅따먹기를 푸는데 생각보다 많이 어려웠음.
처음에는 최댓값 찾고 다음 Index의 값을 0으로 세팅하려고 했는데, 그러니까 실패함 -> 잘못된 접근
그래서 다음으로는 점화식을 찾아보려고 했는데, 에러 케이스를 스스로 발견하고 다른 방법을 고민함.
구글링 결과 어떤 분에게서 아이디어를 얻었는데, 이번에 느낀 점은 이러한 풀이 방식도 있다는 것을 기억하고, 문제 접근하는데 더 열린 사고로 다가가야겠음.
사실 그냥 여러 케이스를 경험해 보면서, 어떠한 문제를 만났을 때 이전에 시도해 본 방법 중 하나가 기억에 떠올라 그 방법을 풀기를 기대하는 측면이 더 큼.
일단 처음에는 정답은 맞았으나, 효율성을 0점을 받았는데, max의 parameter로 3개의 값을 주어서 그랬음.
무슨 말이냐면
아래와 같이 개선했다는 말.
max(A, B, C) // 효율성 0점
max(A, max(B, C)) // 효율성 통과
🟠 개선한 코드
func solution(_ land:[[Int]]) -> Int{
var land = land
var maxIndex = -1
for i in 1..<land.count {
land[i][0] += max(land[i-1][1], max(land[i-1][2], land[i-1][3]))
land[i][1] += max(land[i-1][0], max(land[i-1][2], land[i-1][3]))
land[i][2] += max(land[i-1][0], max(land[i-1][1], land[i-1][3]))
land[i][3] += max(land[i-1][0], max(land[i-1][1], land[i-1][2]))
}
return land.last!.max() ?? 0
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[Swift] BOJ 2579 계단 오르기 (0) | 2022.04.01 |
---|---|
[Swift] BOJ 9095 1,2,3더하기 (0) | 2022.04.01 |
[Swift] 프로그래머스 LV2. JadenCase 문자열 만들기 (0) | 2022.04.01 |
[Swift] 프로그래머스 LV2. 모음사전 (0) | 2022.04.01 |
[Swift] 프로그래머스 LV2. 튜플 (0) | 2022.04.01 |