Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
관리 메뉴

으하하 공부일기

[SWEA] - 2005. 파스칼의 삼각형 (D2) 본문

SWEA/D2

[SWEA] - 2005. 파스칼의 삼각형 (D2)

0으하하0 2022. 4. 22. 19:45

[문제]

크기가 N인 파스칼의 삼각형을 만들어야 한다.
파스칼의 삼각형이란 아래와 같은 규칙을 따른다.
1. 첫 번째 줄은 항상 숫자 1이다.
2. 두 번째 줄부터 각 숫자들은 자신의 왼쪽과 오른쪽 위의 숫자의 합으로 구성된다.
N이 4일 경우,

N을 입력 받아 크기 N인 파스칼의 삼각형을 출력하는 프로그램을 작성하시오.

[제약 사항]
파스칼의 삼각형의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)

[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 N이 주어진다.

[출력]
각 줄은 '#t'로 시작하고, 다음 줄부터 파스칼의 삼각형을 출력한다.
삼각형 각 줄의 처음 숫자가 나오기 전까지의 빈 칸은 생략하고 숫자들 사이에는 한 칸의 빈칸을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

문제 풀기

2005. 파스칼의 삼각형

 


[풀이]

☝ 2차원 배열을 이용하여 풀기

import java.util.Scanner;

class Solution {
	public static void main(String[] args) throws Exception {		
		Scanner sc = new Scanner(System.in);
		
		int t = sc.nextInt();
		
		for(int tc=1; tc<=t; tc++) {
			int n = sc.nextInt();
			
			int map[][] = new int[n][n];
			
			System.out.format("#%d\n", tc);
			
			for(int i=0; i<n; i++) {
				for(int j=0; j<=i; j++) {
					if(i==j || j==0) map[i][j] = 1;
					else map[i][j] = map[i-1][j-1] + map[i-1][j];
				}
			}
			
			for(int i=0; i<n; i++) {
				for(int j=0; j<=i; j++) {
					System.out.print(map[i][j] + " ");
				}
				System.out.println();
			}
		}
	}
}

 

✌ 1차원 배열을 이용하여 풀기

import java.util.Scanner;

class Solution {
	public static void main(String[] args) throws Exception {		
		Scanner sc = new Scanner(System.in);
		
		int t = sc.nextInt();
		
		for(int tc=1; tc<=t; tc++) {
			int n = sc.nextInt();
			
			int arr1[] = new int[n+2];
			int arr2[] = new int[n+2];
			
			arr1[0] = 1;
			
			System.out.format("#%d\n", tc);
			
			for(int i=0; i<n; i++) {
				for(int j=0; j<i+1; j++) System.out.format("%d ", arr1[j]);
				System.out.println();
				for(int j=1; j<i+2; j++) arr2[j] = arr1[j-1] + arr1[j];
				for(int j=1; j<i+2; j++) arr1[j] = arr2[j];
			}
		}
	}
}