반응형
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 합니다.
마지막으로 상담을 하는지, 안 하는지만 재귀로 분기 처리만 해준다면 쉽게 풀 수 있었습니다.
반응형
'Swift' 카테고리의 다른 글
[Swift] @escaping 클로저 (escaping closure) (0) | 2024.12.18 |
---|---|
[Swift] Combination(조합) (1) | 2024.06.16 |
[Swift] Optional Unwrapping (4) - 옵셔널 체이닝 (Optional Chaining) (2) | 2024.04.19 |
[Swift] Optional Unwrapping (3) - 닐 코얼레싱 (Nil-Coalescing) (0) | 2024.01.18 |
[Swift] Optional Unwrapping (2) - 옵셔널 바인딩 (Optional Binding) if let , guard let (1) | 2024.01.15 |