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 합니다.
마지막으로 상담을 하는지, 안 하는지만 재귀로 분기 처리만 해준다면 쉽게 풀 수 있었습니다.
반응형