문제

정수 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

+ Recent posts