개발자꿈나무
정올 9080 - 파스칼 삼각형 출력 본문
- 파스칼 삼각형이란 첫째 행의 값은 1이 되고, 두번째 행부터 첫번째 열과 마지막 열의 값은 1, 나머지는 위의 두 수를 더한 값이 된다.
- 두번째 행의 두번째 열의 값은 위의 1 + 1의 값이고, 세번째 행의 두번째와 세번째 열의 값은 위의 1 + 2 , 2 + 1의 값이다.
- 기억해야할 규칙은 행과 열의 수가 N, N이라는 것
- 첫번째 값은 항상 0이라는 것, 배열의 인덱스로 치면 [i][0] = 1
- 두번째부터 마지막 줄까지 항상 끝값이 1이라는 것[i][i] = 1
- 가운데 들어가는 값들을 식으로 표현하면 [i][j] = [i-1][j-1] + [i-1][j]
int[][] pascal = new int[5][5];
pascal[0][0] = 1;
// 먼저 2차원 배열을 선언해주고, n의 값을 받는 것이 아니라 5행의 값을 바로 출력하라고 했으니 배열의 크기는 [5][5]로 설정
// 0, 0의 값을 1로 먼저 선언해줌
for(int i=1;i<5;i++) {
pascal[i][0] = 1;
pascal[i][i] = 1;
for(int j=1;j<i;j++) {
pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j];
}
}
// 반복문을 통해서 값들 설정
// [0,0]의 값은 설정을 해줬으므로 인덱스[1]부터 시작
// 첫번째 값과 마지막 값은 항상 1이 되어야 하므로 [i][0],[i][i]의 값을 1로 설정
// 출력
for(int i=0;i<pascal.length;i++) {
for(int j=0;j<=i;j++) {
System.out.print(pascal[i][j]+" ");
}System.out.println();
}
< 전체 코드 >
더보기
public class No9080
{
public static void main(String[] args)
{
int[][] pascal = new int[5][5];
pascal[0][0] = 1;
for(int i=1;i<5;i++) {
pascal[i][0] = 1;
pascal[i][i] = 1;
for(int j=1;j<i;j++) {
pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j];
}
}
for(int i=0;i<pascal.length;i++) {
for(int j=0;j<=i;j++) {
System.out.print(pascal[i][j]+" ");
}System.out.println();
}
}
}
728x90
'알고리즘 > 백준 등 알고리즘 문제' 카테고리의 다른 글
No11659 구간합 구하기 (0) | 2023.03.22 |
---|---|
No9020 골드바흐의 추측(우여곡절이 많았던..) (0) | 2023.03.21 |
No1002 : n개의 최대공약수, 최소공배수 (0) | 2023.02.18 |
No1658 : 최대공약수와 최소공배수 구하기 (0) | 2023.02.18 |
사각형 높이 n행 m열의 사각형 형태로 숫자 차례로 출력하기 (0) | 2023.01.30 |