https://www.acmicpc.net/problem/15988
15988번: 1, 2, 3 더하기 3
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다.
www.acmicpc.net
문제
정수 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은 양수이며 1,000,000보다 작거나 같다.
출력
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다.
예제 입출력
입력 | 출력 |
3 4 7 10 |
7 44 274 |
풀이[node.js]
이번 문제는 1, 2, 3 더하기와 같은 문제지만, 범위가 다르다.
1, 2, 3 더하기 설명은 아래 링크에 있다.
https://leylaoriduck.tistory.com/518?category=880546
[백준 9095번 1, 2, 3 더하기 - node.js] [알고리즘 기초 1/2]
https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은..
leylaoriduck.tistory.com
위의 방법과 같고 단지 1000000009로 나눈 나머지 값만 arr에 넣어주면 되므로, 설명은 생략하겠다.
var fs = require('fs');
var inputs = fs.readFileSync('/dev/stdin').toString().split('\n').map(v=>Number(v));
var cases = Number(inputs[0]);
inputs.shift();
var arr = [0, 1, 2, 4];
var num = Math.max(...inputs);
for(var j=4; j<=num; j++){
arr[j] = (arr[j-1] + arr[j-2] + arr[j-3]) % 1000000009;
}
for(var i=0; i<cases; i++){
console.log(arr[inputs[i]]);
}
'알고리즘 스터디 > 백준 알고리즘 기초 1' 카테고리의 다른 글
[백준 1309번 동물원 - node.js] [알고리즘 기초 1/2] (0) | 2021.08.21 |
---|---|
[백준 1932번 정수 삼각형 - node.js] [알고리즘 기초 1/2] (0) | 2021.08.21 |
[백준 11722번 가장 긴 감소하는 부분 수열 - node.js] [알고리즘 기초 1/2] (2) | 2021.08.20 |
[백준 11055번 가장 큰 증가 부분 수열 - node.js] [알고리즘 기초 1/2] (0) | 2021.08.20 |
알고리즘 공부, 회의감.. (5) | 2021.08.19 |
댓글