파스칼의 삼각형
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5P0-h6Ak4DFAUq&categoryId=AV5P0-h6Ak4DFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1
문제 제목 : 파스칼의 삼각형
크기가 N인 파스칼의 삼각형을 만들어야 한다.
파스칼의 삼각형이란 아래와 같은 규칙을 따른다.
-
첫 번째 줄은 항상 숫자 1이다.
-
두 번째 줄부터 각 숫자들은 자신의 왼쪽과 오른쪽 위의 숫자의 합으로 구성된다.
N이 4일 경우,
N을 입력 받아 크기 N인 파스칼의 삼각형을 출력하는 프로그램을 작성하시오.
[제약 사항]
파스칼의 삼각형의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 N이 주어진다.
[출력]
각 줄은 ‘#t’로 시작하고, 다음 줄부터 파스칼의 삼각형을 출력한다.
삼각형 각 줄의 처음 숫자가 나오기 전까지의 빈 칸은 생략하고 숫자들 사이에는 한 칸의 빈칸을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.) 입력 1 4
input.txt 출력 #1 1 1 1 1 2 1 1 3 3 1
output.txt
문제 풀이
import java.util.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T; // 테스트 케이스의 수를 저장하는 변수
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++) // 테스트 케이스 반복문
{
int N = sc.nextInt(); // 행의 수를 입력받는 변수
int[][] pascal = new int[N][N]; // 파스칼의 삼각형을 저장할 2차원 배열
// 파스칼의 삼각형 계산
for(int i = 0; i < N; i++) {
for(int j = 0; j <= i; j++) {
if(i == j) { // 우측 끝
pascal[i][j] = 1;
}
else if(j == 0) { // 좌측 끝
pascal[i][j] = 1;
}
else { // 가운데
pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j];
}
}
}
// 결과 출력
System.out.println("#" + test_case);
for(int i = 0 ; i < N; i++) {
for(int j = 0; j < N; j++) {
if(pascal[i][j] != 0) { // 0이 아닌 경우에만 출력
System.out.print(pascal[i][j] + " ");
}
}
System.out.println();
}
}
}
}
댓글남기기