알고리즘/백준

백준_2775 - JAVA

맏리믓 2022. 12. 27. 11:52


- 알고리즘

. 입력을 받을 때 마다 계산을 하게 되면 시간이 많이 걸리기 때문에 미리 모든 경우에 대한 값을 배열로 제작 한다.

 

. 0층에 사는 사람은 1, 2, 3, ..., 14 처럼 거주자가 1씩 증가한다.

. 1호에 사는 사람은 모두 한명이다.(1층1호, 2층1호, 3층1호, ...)

 

. 그림과 같이 표시된 호실에 거주하는 사람의 수는 아래층 1호실 부터 같은 호실까지의 거주자 수의 합과 같다.

. 조건에 맞게 배열을 생성후 문제를 해결 한다.


- 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class B_2775 {

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//		StringTokenizer st = new StringTokenizer(br.readLine());

		int T = Integer.parseInt(br.readLine());

		for (int l=0; l<T; l++){
			int k = Integer.parseInt(br.readLine());
			int n = Integer.parseInt(br.readLine());

			int[][] APT = new int[16][16];
			for (int i=0; i<15; i++){
				APT[0][i] = 1;
				APT[i][1] = 1;
			}
			for (int i=1; i<16; i++){
				for (int j=1; j<16; j++){
					APT[i][j] = APT[i][j-1] + APT[i-1][j];
				}
			}


			bw.write(APT[k+1][n] + "\n");
			bw.flush();
		}
		bw.close();
	}
}