틀림.내코드 아님.
나는 o(N^2) 발생하는 줄 알고 for 문 2개를 사용할 생각을 안했고 dp로 풀려했다.
아래 코드는 그냥 모든 경우의 수를 보는 코드.
typealias와 Ans.0 등의 코드 인상적이다.
typealias Pair = (Int, [Int])
let N = Int(readLine()!)!
var Ans: Pair = (0, [])
(max(1, N/2)...N).forEach {
var prev = N
var now = $0
var list = [prev, now]
while prev - now >= 0 {
let tmp = prev
prev = now
now = tmp - now
list.append(now)
}
if list.count > Ans.0 {
Ans.0 = list.count
Ans.1 = list
}
}
print("\(Ans.0)\n\(Ans.1.map { String($0) }.joined(separator: " "))")
출처: applebuddy