문제
정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.
- 1+1+1+1
- 1+1+2
- 1+2+1
- 2+1+1
- 2+2
- 1+3
- 3+1
정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.
출력
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
내가 푼 풀이
- n이 5일때 까지 직접 구해봤다.
- n이 5일때 경우의수는 13으로 n=4, n=3, n=2 일때 경우의수를 모두 합한 수로 알 수 있었다.
- 이를 점화식으로 표현하면 dp[n] = dp[n-1] + dp[n-2] + dp[n-3] 로 그만큼의 배열의 크기를 선언해 풀었다.
import Foundation
var count = Int(String(readLine()!))!
var arr = Array(repeating: 0, count: 12)
arr[1] = 1
arr[2] = 2
arr[3] = 4
for i in 4...11 {
arr[i] = arr[i-1] + arr[i-2] + arr[i-3]
}
for i in 0..<count {
var num = Int(String(readLine()!))!
print(arr[num])
}
'코딩테스트 > 백준' 카테고리의 다른 글
BOJ-11726 2xn 타일링 Swift (0) | 2023.04.17 |
---|---|
BOJ-1003 피보나치 함수 Swift (1) | 2023.04.17 |
BOJ-1463 1로 만들기 Swift (0) | 2023.04.17 |
BOJ-2903 중앙 이동 알고리즘 Swift (0) | 2023.04.08 |
BOJ-2720 세탁소 사장 동혁 Swift (0) | 2023.04.08 |