프로그래밍-학습기록/코딩테스트

백준 온라인 저지 | 2446 | 별찍기 - 9

leesche 2020. 7. 22. 13:57

시간이 촉박하게 풀 때는 잘 안 풀리고 죽을 것 같았는데, 다음 날 정신 멀쩡할 때 노트에 별 찍기 그림과 표를 그리면서 하니 잘 풀렸다. 이중 for문 하나로 별의 증가와 감소를 나타낼 수 없었다. 별의 증가와 감소를 나타내기 위해 이중 for문이 두 개 필요했고, 이중 for문 안에 공백을 찍는 for문도 별도로 필요했다.

내가 생각할 때 이 문제 풀이의 핵심은 1) 빠르게 이중 for문 두 개가 필요하다는 것을 알아채는 것이고 2) for문의 조건문을 적절히 결정하는 것이다.

package baekjunOnlineJudge;

import java.util.Scanner;

public class Bj_2446 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        for(int i=0; i<N; i++) {
            for(int j=0; j<i; j++) {
                System.out.print(" ");
            }
            for(int j=0; j<(N-i)*2-1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        for(int i=0; i<N-1; i++) {
            for(int j=0; j<(N-i)-2; j++) {
                System.out.print(" ");
            }
            for(int j=0; j<(i+1)*2+1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}