반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- m1 docker install
- 청년 Ai Big Data 아카데미
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- 가운데 글자 가져오기 java
- 트리의 지름 java
- 프로그래머스 가운데 글자 가져오기 파이썬
- 빅분기실기
- 청년 AI Big Data 아카데미 13기
- 가운데 글자 가져오기 파이썬
- docker 완전 삭제
- m1 docker
- docker remove
- 핸즈온 머신러닝
- 나누어 떨어지는 숫자 배열 python
- 프로그래머스 가운데 글자 가져오기 자바
- 빅데이터분석기사
- 최소 스패닝 트리
- 코드업 1020 java
- 코드업 1020 자바
- 나누어 떨어지는 숫자 배열 java
- 프로그래머스 가운데 글자 가져오기 python
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- codeup 1020 java
- 가운데 글자 가져오기 자바
- codeup 1020 자바
- 최단 경로 알고리즘
- docker 삭제
- 가운데 글자 가져오기 python
- 트리의 지름 자바
- 최소 스패닝 트리 자바
Archives
- Today
- Total
NineTwo meet you
[백준/자바] 15988 1, 2, 3 더하기 3 본문
반응형

문제
정수 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로 나눈 나머지를 출력한다.
예제 입력 1
3
4
7
10
예제 출력 1
7
44
274
설명
다이나믹 프로그래밍을 이용한 문제다.
1, 2, 3 더하기 1 은 재귀로 경우의수를 다 만들어서 풀렸는데
이문제는 같은 방식을 적용하니 바로 시간초과가 발생했다.
코드
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
public class BOJ15988 { | |
public static void main(String[] args) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
int t = Integer.parseInt(br.readLine()); | |
int num[] = new int[t]; | |
long dp[] = new long[1000001]; | |
int max = 0; | |
for(int i = 0; i < t; i++) { | |
num[i] = Integer.parseInt(br.readLine()); | |
max = Math.max(max, num[i]); | |
} | |
dp[1] = 1; | |
dp[2] = 2; | |
dp[3] = 4; | |
for(int i = 4; i <= max; i++) { | |
dp[i] = (dp[i-1] + dp[i-2] + dp[i-3]) % 1000000009; | |
} | |
for(int i = 0; i < t; i++) { | |
System.out.println(dp[num[i]]); | |
} | |
} | |
} |
반응형
'프로그래밍 문제 > 백준' 카테고리의 다른 글
[백준/자바] 9372 상근이의 여행 (0) | 2021.04.28 |
---|---|
[백준/자바] 1068 트리 (0) | 2021.04.28 |
[백준/파이썬] 1202 보석 도둑 (0) | 2021.02.26 |
[백준/파이썬] 1715 카드 정렬하기 (0) | 2021.02.24 |
[백준/파이썬] 1744 수 묶기 (0) | 2021.02.24 |
Comments