Swift

백준 14501번 퇴사 Swift

띵지니어 2024. 11. 12. 23:58
반응형

https://www.acmicpc.net/problem/14501

 

내 코드

let N = Int(readLine()!)!
var interview: [[Int]] = []
var result = 0

for _ in 0..<N {
    let input = readLine()!.split(separator: " ").map { Int($0)! }
    interview.append(input)
}

func recur(ind: Int, price: Int) {

    if ind > N {
        return
    }
    if ind == N {
        result = max(result, price)
        return
    }
    
    // 상담 할 때
    recur(ind: ind + interview[ind][0], price: price + interview[ind][1])
    
    // 상담 안 할 때
    recur(ind: ind + 1, price: price)
}

recur(ind: 0, price: 0)
print(result)

 

Review

 

ind > N 이면 상담을 더 진행할 수 없는 날이므로 return 해줘야 합니다.

ind == N 일 때도 상담을 하면 최대 이익을 볼 수 있기 때문에 최댓값을 계산해 주고 return 합니다.

마지막으로 상담을 하는지, 안 하는지만 재귀로 분기 처리만 해준다면 쉽게 풀 수 있었습니다.

반응형