Competition/Baekjoon

[백준] 2447번 자바 별찍기

bisi 2020. 3. 31. 15:49
문제 출처 

https://www.acmicpc.net/problem/2447

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다.

www.acmicpc.net

 

 

 

접근 방식 및 풀이

- 분할정복.. 기본적인 문제, 배열의 위치에 대한 규칙성을 찾아 구현

- 참고 블로그

https://gaebal-goebal.tistory.com/37

 

[백준]2447번: 별찍기-10

https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 첫째 줄에 N이 주어진다. N은 항상 3의 제곱꼴인 수이다. (3, 9, 27, ...) (N=3k, 1 ≤ k < 8) www.acmicpc.net 어떻게 풀까? 위의 이미지에서 검..

gaebal-goebal.tistory.com

 

 

 

 

소스 코드 
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    static String[][] stars;
    static int n ;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        stars = new String[n][n];
        for (int i = 0; i <n ; i++) {
            for (int j = 0; j <n ; j++) {
                stars[i][j] = " ";
            }
        }
        makeStarArray(0,0,n);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i <n ; i++) {
            for (int j = 0; j <n ; j++) {
                sb.append(stars[i][j]);
            }
            sb.append("\n");
        }
        System.out.println(sb.toString());
    }


    private static void makeStarArray(int row, int col, int num ){

        if(num==1){
            stars[row][col] = "*";
            return;
        }

        int val = num/3;
        for (int i = 0; i <3 ; i++) {
            for (int j = 0; j <3 ; j++) {
                if(i==1 && j==1){// 같은경우는 넣지 않는다.
                }else{
                    makeStarArray(row+(val*i), col+(val*j), val);
                }
            }
        }
    }

}

 

 

 

 

결과 

 

'Competition > Baekjoon' 카테고리의 다른 글

[백준] 1992번 자바 쿼드트리  (0) 2020.04.01
[백준] 2110번 자바 공유기 설치  (0) 2020.03.31
[백준] 1780번 종이의 개수  (0) 2020.03.31