2447 - 별 찍기

slee2·2021년 12월 27일
0

백준

목록 보기
6/20

문제

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

풀이

이 문제를 해결할때 처음에는 int의 이중배열로 해결하려고 했으나 메모리 초과가 발생하여 String에 넣는 방식으로 변경했더니 쉽게 해결이 되었다.

import java.util.Scanner;

public class Num2447 {

    public static int N;
    public static String[] Num;

    public static void main(String[] args) {
        //input
        Scanner scanner = new Scanner(System.in);
        N = Integer.parseInt(scanner.nextLine());
        Num = new String[N];
        for (int i=0; i<N; i++)
            Num[i] = "";

        //logic
        input(0, 0, N);

        //output
        for (int i=0; i<N; i++) {
            System.out.println(Num[i]);
        }
    }

    public static void input(int startHeight,int startWidth, int size) {
        if (size == 3) {
            Num[startHeight] += "***";
            Num[startHeight + 1] += "* *";
            Num[startHeight + 2] += "***";
            return;
        }
        for (int i=0; i<3; i++) {
            for (int j=0; j<3; j++) {
                if (i != 1 || j != 1)
                    input(startHeight + i * (size/3), startWidth + j * (size/3), size/3);
                else {
                    for (int k=0; k<size/3; k++) {
                        for (int t=0; t<size/3; t++) {
                            Num[startHeight + k + i * (size/3)] += " ";
                        }
                    }
                }
            }
        }
    }
}

0개의 댓글

Powered by GraphCDN, the GraphQL CDN