import java.io.*;
public class SW2005 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int t = 1; t <= T; t++) {
int N = Integer.parseInt(br.readLine());
int[] before = new int[N+1];
int[] after = new int[N+1];
System.out.println("#" + t);
for (int i = 0; i < N; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0) {
after[j] = 1;
} else {
after[j] = before[j-1] + before[j];
}
}
for (int k = 0; k < N; k++) {
if (after[k] != 0) {
before[k] = after[k];
System.out.print(before[k]);
} else {
break;
}
System.out.print(" ");
}
System.out.println();
}
}
}
}
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int t = 1; t <= T; t++) {
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N+1][N+1];
System.out.println("#" + t);
arr[0][0] = 1;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= i; j++) {
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
}
import java.io.*;
class Solution {
public static void main(String[] args) throws IOException{
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int t=1;t<=T;t++){
int n = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
int[][] arr = new int[n+1][n+1];
arr[0][0] = 1;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
sb.append(arr[i][j]+" ");
}
sb.append('\n');
}
System.out.println("#"+t);
System.out.print(sb);
}
}
}
먼저 내 풀이를 설명하자면 한줄씩 출력하는 방식으로 풀이하였다.
1차원 배열에 이전 행과 현재 행을 나눠서 매번 업데이트 해 주는 방식이다.
풀이에는 성공했지만 더 나은 코드가 궁금해서 찾아본 결과 arr[N+1][N+1] 크기의 2차원배열을 생성하여 그래프방식으로 푸는 간단한 문제라는 것을 알게 되었다.
또한, 코드를 한 단계 더 최적화 하기위해 StringBuilder를 적용하였다.
블로그에서 StringBuilder를 사용해 푸는것을 몇번 봤는데 정확히 언제 어떻게 사용하는지는 알지 못하였으나, 이번 기회에 확실히 알고 다른 풀이 때 적용해 보도록 하겠다.