[알고리즘] Swift -백준 #9095(1, 2, 3 더하기)
2023. 3. 22. 23:48ㆍALGORITHM/Swift
728x90
반응형
문제링크
문제
정수 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의 합으로 나타내는 방법의 수를 출력한다.
예제 입력 1
3
4
7
10
예제 출력 1
7
44
274
분석
1,2,3을 이용하여 n을 만드는 방법이 몇 개인지 구하는 문제
풀이 과정
t = 테스트 케이스
n = 정수 (1~10)
n = 0 | n = 1 1 |
n = 2 1+1 2 |
n = 3 1+1+1 1+2 2+1 3 |
n = 4 1+1+1+1 1+1+2 1+2+1 1+3 2+1+1 2+2 3+1 |
n = 5 1+1+1+1+1 1+1+1+2 1+1+2+1 1+1+3 1+2+1+1 1+2+2 1+3+1 2+1+1+1 2+1+2 2+2+1 2+3 3+1+1 3+2 |
n = 6 1+1+1+1+1+1 1+1+1+1+2 1+1+1+2+1 1+1+1+3 1+1+2+1+1 1+1+2+2 1+1+3+1 1+2+1+1+1 1+2+1+2 1+2+2+1 1+2+3 1+3+1+1 1+3+2 2+1+1+1+1 2+1+1+2 2+1+2+1 2+1+3 2+2+1+1 2+2+2 2+3+1 3+1+1+1 3+1+2 3+2+1 3+3 |
1 | =1 | =2 | =4 | =7 | =13 | =24 |
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
풀이
testimport Foundation
var map = Array(repeating: 0, count: 11)
map[0] = 1
map[1] = 1
map[2] = 2
for i in 3..<11 {
map[i] = map[i-1] + map[i-2] + map[i-3]
}
let t = Int(readLine()!)!
for _ in 0..<t {
let n = Int(readLine()!)!
print(map[n])
}
결과
📂 정리
표정리하다가,... 빠진 거 있어서 규칙이 안나와서.. 오래걸렸다..
728x90
반응형
'ALGORITHM > Swift' 카테고리의 다른 글
[알고리즘] Swift -백준 #2193(이친수) -DP (0) | 2023.03.23 |
---|---|
[알고리즘] Swift -백준 #2579(계단 오르기) -DP (0) | 2023.03.23 |
[알고리즘] Swift -백준 #9625(BABBA) (0) | 2023.03.22 |
[알고리즘] Swift -백준 #1010(다리 놓기) -DP (0) | 2023.03.22 |
[알고리즘] Swift -백준 #10844(쉬운 계단 수) -DP (0) | 2023.03.20 |