글에 개요
백준 알고리즘 9095번 "1, 2, 3 더하기" 문제입니다.
이 문제는 DP(동적 계획법)을 활용하는 문제로 팰린드롬에 이어 2번째 등장이네요.
아마 동적 계획법에 사용되는 점화식의 활용에 익숙해지고, 이후 재귀함수로 구현할 때 Top-down, Bottom-up 방식해 질 때까지 최대한 꾸준히 풀어볼 생각입니다.
[백준 9095] 1, 2, 3 더하기: https://www.acmicpc.net/problem/9095
참고할 글
- [백준 10942] 팰린드롬? : http://brenden.tistory.com/27
핵심 내용
- 정수 n을 1,2,3의 조합으로 나타내는 방법의 수를 구하는 문제입니다.
- D[i] = i를 1,2,3의 조합으로 나타내는 방법의 수
- D[i] = D[i-1] + D[i-2] + D[i-3]
- 위 점화식을 활용하여 문제를 해결할 것입니다.
해결 방법
- n이 11보다 작은수라고 정해져 있기 때문에 크기가 11인 배열을 만들어줍니다.
- answerAry[0] = 1로 초기화
- 위의 점화식으로 해결할 때, 현재 index값이 3이 넘어가기 전까지는 1의 조합 혹은 2의 조합만 가능하기 때문에 이에 대한 예외처리를 해줍니다.
해결한 코드
백준 내용 참고
1, 2, 3 더하기 성공
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 15097 | 9927 | 6909 | 64.162% |
문제
정수 4를 1, 2, 3의 조합으로 나타내는 방법은 총 7가지가 있다.
- 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
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 11729] 하노이 탑 이동 순서 (0) | 2018.04.21 |
---|---|
[백준 11052] 붕어빵 판매하기 (0) | 2018.04.20 |
[백준 1509] 팰린드롬 분할 (0) | 2018.04.19 |
[백준 10942] 팰린드롬? (1) | 2018.04.19 |
[백준 10825] 국영수 (0) | 2018.04.18 |