반응형
목차
https://www.acmicpc.net/problem/9095
문제풀이
시간제한이 1초이므로 일반적인 for문은 사용할 수 없다. DP로 풀어보겠다.
정수 n은 양수이며 11보다 작다. 1, 2, 3의 합으로 나타내야한다.
[0]~[10]인 배열을 생성했다고하자. [0]은 사용하지 않는다.
잘 살펴보면
[2]는 [1]에 +1을 더한값과 자기자신인 2를 가지고 있고
[3]은 [2]에 +1을 더한값과 자기자신인 3을 가지고 있다.
[4]는 [3]+1, [2]+2, [1]+3을 더한값을 가지고있지만 자기자신인 "4"는 표현할 수 없기 때문에 제외되었다.
[5]는 [4]+1, [3]+2, [2]+3, [1]+4로 표현할 수 있지만 "4"는 구성요소인 1, 2, 3이 아니기때문에 제외되었다.
제출코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[] nums = new int[11];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
nums[0] = 0;
nums[1] = 1;
nums[2] = 2;
nums[3] = 4;
//배열 값 셋팅
for (int i = 4; i <= 10; i++) {
nums[i] = nums[i-3] + nums[i-2] + nums[i-1];
}
//출력
for (int t = 0; t < T; t++) {
int n = Integer.parseInt(br.readLine());
System.out.println(nums[n]);
}
}
}
반응형
'Coding Test' 카테고리의 다른 글
[백준] 1932번 정수 삼각형 자바 DP (0) | 2022.04.04 |
---|---|
[백준] 1074번 Z 자바 (분할정복) (0) | 2022.02.24 |
[백준] 2630번 색종이 만들기 자바 (분할정복) (0) | 2022.02.22 |
[백준] 1012 유기농배추 자바 BFS, DFS (0) | 2022.02.21 |
[백준] 1697 숨바꼭질 1차원 BFS (0) | 2022.02.12 |