※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 9095번 문제인 1, 2, 3 더하기이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
1, 2, 3은 각각 아래와 같이 표현이 가능하다:
1(1가지): 1
2(2가지): 2, 1+1
3(4가지): 3, 1+2, 2+1, 1+1+1
4 이상의 자연수 n에 대하여, n을 1과 2와 3의 합으로 나타낸 표현은 "+1"로 끝나거나 "+2"로 끝나거나 "+3"으로 끝난다는 점을 관찰하자. "+1"로 끝나는 표현의 개수는 n-1을 1과 2와 3의 합으로 나타내는 가짓수와 같고, "+2"로 끝나는 표현의 개수는 n-2를 1과 2와 3의 합으로 나타내는 가짓수와 같고, "+3"으로 끝나는 표현의 개수는 n-3을 1과 2와 3의 합으로 나타내는 가짓수와 같다. 이를 이용해 점화식을 세울 수 있고, 문제를 해결할 수 있다.
아래는 제출한 소스코드이다:
#include <iostream>
using namespace std;
int ans[11];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
ans[1] = 1, ans[2] = 2, ans[3] = 4;
for (int i = 4; i < 11; i++) {
ans[i] = ans[i - 1] + ans[i - 2] + ans[i - 3];
}
int T; cin >> T;
while (T--) {
int x; cin >> x;
cout << ans[x] << '\n';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 2250 // C++] 트리의 높이와 너비 (0) | 2023.04.15 |
---|---|
[BOJ 2290 // C++] LCD Test (0) | 2023.04.14 |
[BOJ 15490 // C++] 즐거운 게임 (0) | 2023.04.12 |
[BOJ 7580 // C++] Team Selection (1) | 2023.04.11 |
[BOJ 25323 // C++] 수 정렬하기, 근데 이제 제곱수를 곁들인 (0) | 2023.04.10 |