개발자꿈나무

정올 9080 - 파스칼 삼각형 출력 본문

알고리즘/백준 등 알고리즘 문제

정올 9080 - 파스칼 삼각형 출력

망재이 2023. 2. 12. 21:31

 

  •  파스칼 삼각형이란 첫째 행의 값은 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