Algorithm/Baekjoon
[Swift] 9095 - 1, 2, 3 더하기
내일은개발천재🎵
2023. 3. 22. 16:15
9095 1, 2, 3 더하기
문제 요약
정수 n이 주어졌을 때, 1, 2, 3의 합으로 나타낼 수 있는 경우의 수를 계산해라.
n = 3이라면 (1+1+1, 1+2, 2+1, 3) 4가지로 표현할 수 있다.
접근방법
- 사실 규칙을 생각하기 전에 점화식이 떠올랐다. (얻어 걸렸다는 말)
- 점화식 $$F(n) = F(n-1) + F(n-2) + F(n-3)$$
- 이게 왜 맞지? 라는 생각을 했는데 F(1)의 1이 의미하는 바가 최댓값이 1이라고 생각하면 쉽게 이해할 수 있다.
- F(4) = F(3) + F(2) + F(1) 이다.
- F(1)에서 3을 더하면 4, F(2)에서 2를 더하면 4, F(3)에서 1을 더하면 4가 된다.
- 마찬가지로 F(7) = F(6) + F(5) + F(4)
- F(6)에서 1을 더하면 7, F(5)에서 2를 더하면, F(4)에서 3을 더하면 7이 된다.
- 경우의 수와 연산을 헷갈리지 말자!!
![](<../../.gitbook/assets/image (3).png>)![](<../../.gitbook/assets/image (1).png>)
코드
var dp = [0, 1, 2, 4]
// 점화식을 코드로 표현한다.
for i in 4...11 {
dp.append(dp[i-1] + dp[i-2] + dp[i-3])
}
// 결과를 출력한다.
let testCase = Int(readLine()!)!
for _ in 0 ..< testCase {
print(dp[Int(readLine()!)!])
}