알고리즘

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

hminor 2024. 10. 25. 17:07
반응형

풀이

  • 이전 파스칼의 삼각형이랑 크게 차이가 없었기에, 간단하게 해결할 수 있었다.
  • 우선 기존 코드에서 탐색 범위만 더 넓히고, 반복문으로 범위에 해당하는 값을 더하여 해결

 

import java.io.*;
import java.util.Arrays;
public class _15489 {
    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]+NK[2]+1];
        cnt_li[1] = 1;
        for (int i=2; i<=NK[0]+NK[2]; i++) cnt_li[i] = cnt_li[i-1]+i;
        int[] li = new int[cnt_li[NK[0]+NK[2]]];
        Arrays.fill(li,1);

        for (int i=3; i<=NK[0]+NK[2]; 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];
        }
        int result = 0;
        int cnt = 1;
        for (int i=NK[0]-1; i<NK[0]+NK[2]-1; i++) {
            for (int j=NK[1]-1; j<NK[1]-1+cnt; j++) result += li[cnt_li[i]+j];
            cnt ++;
        }
        System.out.println(result);
    }
}