코딩테스트 준비 💻/Baekjoon

[백준] 자바 Java, 2447번: 재귀 > 찍기 - 10 🥨

ImYena 2021. 10. 31. 22:49
728x90

 

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

www.acmicpc.net


문제

재귀적인 패턴으로 별을 찍어 보자.

N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다.

크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다.

***
* *
***

N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다.

 

입력

첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k < 8이다.

 

출력

첫째 줄부터 N번째 줄까지 별을 출력한다.

 

 

알고리즘 분류

  • 분할 정복
  • 재귀

 

나의 풀이

package baekjoon.level10_recursion;

import java.util.Arrays;
import java.util.Scanner;

// 백준 2447 문제] 별 찍기 - 10
public class Baekjoon2447 {
    static char[][] starArr;

    public static void star(int x, int y, int N) {
        if(N == 1) {
            starArr[x][y] = '*';
            return;
        }

        for(int i=0; i<3; i++) {
            for(int j=0; j<3; j++) {
                if(i == 1 && j == 1) {
                    continue;
                } else {
                    star(x+((N/3)*i), y+((N/3)*j), (N/3));
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        starArr = new char[N][N];

        for(int i=0; i<starArr.length; i++) {
            Arrays.fill(starArr[i],' ');
        }

        star(0, 0, N);

        for(int i=0; i<starArr.length; i++) {
            System.out.println(starArr[i]);
        }
    }
}

 

  • 참고
 

백준 2447번 : 별 찍기 - 10 (JAVA) 문제 풀이

🚀문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸

iseunghan.tistory.com

 

[백준,BOJ 2447] 별 찍기-10(JAVA 구현)

-내 생각 솔직히 문제에 대한 이해는 어느정도 쉽다고 생각한다. 프렉탈 형태의 별들을 나눠서 생각해보면 규칙은 금방 찾을 수 있을 것이다. 그러나 재귀적으로 이를 구현하는데 있어서 너무

fbtmdwhd33.tistory.com

사실 참고가 아니라 거의 보고 푼 수준,,, 문제는 이해되는데 재귀를 어떻게 만드는지 여전히 모르겠다 😭

코린이 레벨업 하고 다시 풀어보자 💪💪

 

 

결과

728x90
반응형