문제
풀이
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
int[] ans = new int[11]; // 0 < n < 11
ans[1] = 1;
ans[2] = 2; // 1 + 1 or 2
ans[3] = 4; // 1 + 1 + 1 or 1 + 2 or 2 + 1 or 3
// 모든 n에 대해 계산을 한다.
for (int i = 4; i < 11; i++) {
// n = 4이면 (1을 만드는 방법) + 3, (2를 만드는 방법) + 2, (3을 만드는 방법) + 1 로 풀어낼 수 있다.
// n = 5일 때 1, 2, 3을 제외한 숫자를 사용하지 않으므로 (1을 만드는 방법) + 4를 고려하지 않는다.
ans[i] = ans[i - 1] + ans[i - 2] + ans[i - 3];
}
// 이미 계산을 완료하였으므로 n을 만드는 방법 수를 출력한다.
for (int i = 0; i < T; i++) {
int n = Integer.parseInt(br.readLine());
bw.append(String.valueOf(ans[n]));
bw.newLine();
}
bw.flush();
bw.close();
br.close();
}
}
'알고리즘(코딩테스트)' 카테고리의 다른 글
백준 1149번 RGB거리(JAVA) (0) | 2022.03.01 |
---|---|
백준 1932번 정수 삼각형(JAVA) (0) | 2022.03.01 |
백준 11726번 2xn 타일링(JAVA) (0) | 2022.02.28 |
백준 11062번 카드 게임(JAVA) (0) | 2022.02.28 |
백준 9252번 LCS2(JAVA) (0) | 2022.02.28 |
댓글