백준 2635

hankyulee·2022년 1월 3일
0

NeededToRetry

목록 보기
4/4

틀림.내코드 아님.
나는 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

0개의 댓글