반응형
SMALL
총 세가지 버전.
1. 첫번째
: 가장 일반적인 파스칼의 삼각형
왼쪽 상단부터 채워줌
arr[x][y] = arr[x-1][y] + arr[x-1][y-1] 사용
2. 두번째
: 따로 공백도 출력해주는방법을 사용
왼쪽 하단부터 채워줌
arr[x][y] = arr[x+1][y] + arr[x+1][y-1] 사용
3. 세번째
: 행과 열을 바꿔서 열을 기준으로 채워줌
오른쪽 하단부터 채워줌
arr[y][x] = arr[y][x + 1] + arr[y + 1][x + 1]
#include <stdio.h>
int main() {
int n,m;
scanf("%d %d", &n,&m);
int arr[100][100];
if (m == 1) {
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i;j++) {
if (j == 0 || i == j)arr[i][j] = 1;
else arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
else if (m == 2) {
for (int i = n - 1; i >= 0; i--) {
for (int j = 0; j < n - i; j++) {
if (j == 0 || j == n - i - 1)arr[i][j] = 1;
else arr[i][j] = arr[i + 1][j] + arr[i + 1][j - 1];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
printf(" ");
}
for (int j = 0; j < n - i; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
}
else if (m == 3) {
for (int i = n - 1; i >= 0; i--) {
for (int j = n - 1; j >= i; j--) {
if (j == n - 1 || i == j)arr[j][i] = 1;
else arr[j][i] = arr[j][i + 1] + arr[j + 1][i + 1];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
return 0;
}
반응형
LIST
'정올 문제풀이' 카테고리의 다른 글
정올 1339 : 문자삼각형 2 (0) | 2020.04.27 |
---|---|
정올 1002 : 최대공약수, 최소공배수 응용 (0) | 2020.04.27 |
정올 1658 : 최대공약수, 최소공배수 (+유클리드 호제법) (0) | 2020.04.27 |
정올 2809 : 약수 + 버블정렬 (0) | 2020.04.27 |
정올 1338 : 문자삼각형 (0) | 2020.04.27 |
댓글