백준 10994번 : 별 찍기 - 19 | 자바 풀이

박지윤·2022년 7월 20일
0

Algorithm_Implementation

목록 보기
16/16
post-thumbnail

[ Solution ]

package implement10994;

import java.util.*;
import java.io.*;

public class Main {

    static char[][] star;

    public static void main(String[] args) throws IOException {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = 1 + 2 * (n-1);
        star = new char[m][m];

        for(int i = 0; i < m; i++) {
            for(int j = 0; j < m; j++) {
                star[i][j] = ' ';
            }
        }

        pointStar(0, m);

        for(int i = 0; i < m; i++) {
            for(int j = 0; j < m; j++) {
                System.out.print(star[i][j]);
            }
            System.out.println();
        }
    }

    public static void pointStar(int n, int m) {
        for(int i = n; i < m; i++) {
            star[n][i] = '*'; // 맨위 가로
            star[m-1][i] = '*'; // 맨 아래 가로
            star[i][n] = '*'; // 왼쪽 세로
            star[i][m-1] = '*'; // 오른쪽 세로
        }

        if(m == 1) return;

        pointStar(n+2, m-2);
    }
}

하나하나 그려보다가,, 전체 칸의 규칙 찾는 것보다는 그냥 테두리에서부터 그리는 것이 가장 쉬워보여서 그 방법으로 구현했다. 띄워주는 칸까지 고려해주기보다는 모두 ' '으로 초기화 해주고, 별만 규칙을 찾아 밖에서 안으로 그려주었다.

1개의 댓글

comment-user-thumbnail
2023년 9월 15일

m 범위가 잘못된 듯 싶습니다!

답글 달기