Algorithm/백준 알고리즘

백준_1010 다리 놓기(자바) /DP

미스터로즈 2021. 7. 5. 09:30

시간&메모리 제한

 

문제

 

입력&출력

 

문제풀이

package com.Back;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Back_1010 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int[][] dp = new int[30][30];
		for (int i = 0; i < 30; i++) {
			dp[i][i]=1;
			dp[i][0]=1;
		}
		for (int i = 2; i < 30; i++) {
			for (int j = 1; j < 30; j++) {
				dp[i][j]=dp[i-1][j-1]+dp[i-1][j];
			}
		}
		
		int testCase = Integer.parseInt(br.readLine());
		
		int N,M;
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		for (int tc = 0; tc < testCase; tc++) {
			st = new StringTokenizer(br.readLine());
			N = Integer.parseInt(st.nextToken());
			M = Integer.parseInt(st.nextToken());
			
			sb.append(dp[M][N]+"\n");
		}
		System.out.println(sb);
	}
}

 

- 이 문제는 DP를 이용하는 문제입니다.

 

- 조합에 대한 수학적인 지식이 있어야 조금은 수월하게 풀 수 있습니다.

 

- nC0 또는 nCn의 경우는 1의 값을 가집니다.

 

- https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%8A%A4%EC%B9%BC%EC%9D%98_%EC%82%BC%EA%B0%81%ED%98%95

 

파스칼의 삼각형 - 위키백과, 우리 모두의 백과사전

파스칼의 삼각형(Pascal's triangle)은 수학에서 이항계수를 삼각형 모양의 기하학적 형태로 배열한 것이다. 이것은 블레즈 파스칼에 의해 이름 붙여졌으나 이미 수세기 전에 다른 사람들에게서 연

ko.wikipedia.org

- 파스칼의 삼각형을 참고하여 dp를 짰습니다.