티스토리 뷰

728x90

문제

https://www.acmicpc.net/problem/16395

 

16395번: 파스칼의 삼각형

파스칼의 삼각형은 이항계수를 삼각형 형태로 배열한 것인데, 블레즈 파스칼(1623-1662)을 따라 이름 붙여졌다. 단순한 형태로, 파스칼의 삼각형은 다음과 같은 방법으로 만들 수 있다. N번째 행

www.acmicpc.net

 

풀이 및 소스코드

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

class Main {
	static int n,k ;
	static int[][] tri;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		st = new StringTokenizer(br.readLine());
		
		n = Integer.parseInt(st.nextToken());
		k = Integer.parseInt(st.nextToken());
		tri = new int[n+1][n+1];
		for(int i=2;i<=n;i++) {
			tri[i][1] = 1;
			tri[i][i] = 1;
		}
		if(n == k || k == 1) {
			System.out.println(1);
			System.exit(0);
		}
		make_tri(3,2);
		System.out.println(tri[n][k]);
	}
	
	//[i][j] = [i-1][j-1]+[i-1][j]
	public static void make_tri(int x, int y) {
		if(x==n&& y==k+1) {
			return;
		}
		if(x==y) {
			make_tri(x+1, 2);
		} else {
			tri[x][y] = tri[x-1][y-1]+tri[x-1][y];
			make_tri(x, y+1);
		}
		
	}
	
}
반응형