목록바킹독 알고리즘 (21)
쥐수의 공부노트

정답 : let n = Int(readLine()!)! var array = Array(repeating: 0, count: 1001) array[1] = 1 array[2] = 2 if n == 1 { print(array[1]) } else if n == 2{ print(array[2]) } else { for i in 3...n { array[i] = (array[i-1] + array[i-2]) % 10007 } print(array[n]) } 더보기 TMI : DP 문제들은 문제를 푸는 것이 어려운게 아니라, 점화식을 세우기 위한 단계가 가장 어려운 것 같다. 이번에는 초기값과 점화식을 보지 않고, 내가 한번 생각을 해 보았다. 세울 때, 암산으로 세우다 보니 조금 답답한 감이 있지만, 그래도 ..

정답 : let n = Int(readLine()!)! var array = Array(repeating: Array(repeating: 0, count: 3), count: n+1) var point = Array(repeating: Array(repeating: 0, count: 3), count: n+1) for i in 1...n { let input = readLine()!.split(separator: " ").map{Int($0)!} point[i][0] = input[0] point[i][1] = input[1] point[i][2] = input[2] } array[1][0] = point[1][0] array[1][1] = point[1][1] array[1][2] = point[1][..

정답 : let n = Int(readLine()!)! var stairs = [Int]() var dp = Array(repeating: 0, count: n+1) for _ in 0..= 2 { dp[2] = stairs[0] + stairs[1] } for i in 3...n { dp[i] = max(dp[i-2], dp[i-3] + stairs[i-2]) + stairs[i-1] } print(dp[n]) 더보기 TMI : 코드블럭을 사용해서 올리는 방법을 알게 되었다.. 할 줄 몰라서 스크린샷만 사용했는데.. 앞으로는 코드블럭을 애용하자! 문제에 대해서 2차원 배열을 사용하는 방법과 1차원 배열을 사용하는 방법을 진행했지만, 내가 코드를 잘못 옮긴건지, 자꾸 오답이 나왔다. 그래서 아쉽게도 바킹..

정답 : 4를 예로 들었을 때, 방법의 수는 총 7가지였다. 1+1+1+1 , 1+2+1, 2+1+1,3+1 => (3을 1,2,3의 합으로 표현한 것) + 1 => Array[3] 1+1+2,2+2 => (2를 1,2,3의 합으로 표현한 것) + 2 => Array[2] 1+3 => (1을 1,2,3의 합으로 표현한 것) + 3 => Array[1] 따라서 Array[4] = Array[1] + Array[2] + Array[3] 이 된다. 대단하다..