PS/Baekjoon
[백준] 16395: 파스칼의 삼각형(C++)
코딩고수이고파
2025. 4. 29. 08:49
문제
https://www.acmicpc.net/problem/16395
풀이
삼각형 형태를 좌측 정렬하여 2차원 배열로 생각해서 푸면 되는 문제이다.
배열을 pascal[i][j]이라고 가정할 때, j = 0, j = i인 경우에는 모두 1을 저장한다.
그 외의 값들은 위 행의 인접한 두 수를 더하면 되는데, 2차원 배열이므로 식을 아래처럼 만들 수 있다.
pascal[i][j] = pascal[i-1][j-1] + pascal[i-1][j]
코드
#include <iostream>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n, k;
cin >> n >> k;
int pascal[31][31];
for (int i = 0; i < n; i++) {
pascal[i][0] = 1;
pascal[i][i] = 1;
if (i < 2) //행이 2보다 작을 때는 1밖에 없다
continue;
for (int j = 1; j < i; j++) {
pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j];
}
}
cout << pascal[n - 1][k - 1];
return 0;
}