알고리즘

[백준, 자바, 16395번] 파스칼의 삼각형

hminor 2024. 10. 25. 16:31
반응형

풀이

  • 뭔가 간단하게 N행의 길이를 K만큼 길이로 만들어 쉽게 해결할 수도 있었지만
  • 불필요한 배열을 만들고 싶지 않아서 다르게 생각하다
  • 뭔가 시간이 더 걸려버림...
  • 그래서 아래와 같이 해결.

 

import java.io.*;
import java.util.Arrays;
public class _16395 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] NK = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        int[] cnt_li = new int[NK[0]+1];
        cnt_li[1] = 1;
        for (int i=2; i<=NK[0]; i++) cnt_li[i] = cnt_li[i-1]+i;
        int[] li = new int[cnt_li[NK[0]-1]];
        Arrays.fill(li,1);

        if (NK[0]>2 && NK[1]!=1 && NK[1]!=NK[0]) {
            for (int i=3; i<NK[0]; i++) {
                for (int j=1; j<i-1; j++) li[cnt_li[i-1]+j] = li[cnt_li[i-2]+j-1]+li[cnt_li[i-2]+j];
            }
            System.out.println(li[cnt_li[NK[0]-2]+NK[1]-2]+li[cnt_li[NK[0]-2]+NK[1]-1]);
        } else System.out.println(1);
    }
}