본문 바로가기
알고리즘/백준

백준 2447번 자바 java

by 클로드 2020. 12. 17.
반응형

문제

www.acmicpc.net/problem/2447

 

2447번: 별 찍기 - 10

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

www.acmicpc.net

풀이

3일 경우

[3][3] 배열에서

빈칸이 있는 중앙 [1][1] 인 것

 

 

9일 경우 [9][9]일 경우

3x3으로 나눈 중앙의 곳 빈칸

 

코드

import java.util.Scanner;

public class Main {
    static char[][] arr;

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

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

        star(0, 0, N);

        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                sb.append(arr[i][j]);
            }
            sb.append("\n");
        }

        System.out.println(sb);
    }

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

        n /= 3;

        for (int i = 0; i < 3; i++) {
           for (int j = 0; j < 3; j++) {
               if (i == 1 && j == 1) {
                   continue;
               }

               star(x + (i * n), y + (j * n), n);
           }
        }
    }
}

 

재귀함수는 이해가 힘든 느낌이다

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준 10814 문제 자바 java  (0) 2021.01.12
백준 2108번 자바 java  (0) 2020.12.24
백준 10989번 자바 java  (0) 2020.12.23
백준 2751번 자바 java  (0) 2020.12.17
백준 1002번 자바 java  (2) 2020.12.15

댓글