티스토리 뷰
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()!)!])
}
'Algorithm > Baekjoon' 카테고리의 다른 글
[Swift] 7576 토마토 (0) | 2023.03.24 |
---|---|
[Swift] 1753 - 최단경로 (0) | 2023.03.24 |
[Swift] 1463 1로 만들기 (0) | 2023.03.22 |
[Swift] 2839 설탕배달 (0) | 2023.03.22 |
[Swift] 1707 이분그래프 (0) | 2023.03.20 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 깃
- 레플릿
- 백준
- 깃허브
- Code up
- 부르트포스
- SwiftUI
- 코드업
- ord
- 16진수 입력
- 파이썬
- CHR
- python
- baekjoon
- replit
- 프로그래머스
- COMMIT
- do while
- 반복문
- Swift
- 이것이 코딩테스트다
- 설명
- 기초 100제
- CodeUp
- for문
- 정답
- 코드 업
- 리플릿
- 시간초과
- level1
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함