Dev.baelanche

[백준 16505] 별 본문

Data Structure & Algorithm/PS - JAVA

[백준 16505] 별

baelanche 2019. 7. 2. 21:39
반응형

 

별찍기 문제집은 다 풀었는데 다른 별찍기를 찾았다 ㅋㅋ

 

n에 따른 배열의 크기를 보면 2^n * 2^n 이다.

별은 가로, 세로 둘다 절반만큼의 크기로 왼쪽 위, 오른쪽 위, 왼쪽 아래 3군데에 똑같은 모양으로 그려져 있다.

 

가로, 세로 길이를 2배로 늘려가며 패턴을 3군데에 똑같이 그려주면 된다.

 

public class Main {
    
    static char a[][];
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int l = (int)Math.pow(2, n);
        a = new char[l][l];
        
        for(int i=0; i<l; i++)
            for(int j=0; j<l; j++)
                a[i][j] = ' ';
        
        a[0][0] = '*';
        int len = 1;
        while(n-->0) {
            drawStar(0, 0, len);
            len *= 2;
        }
        
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<l; i++) {
            for(int j=0; j<l-i; j++)
                sb.append(a[i][j]);
            sb.append("\n");
        }
        
        System.out.println(sb.toString().substring(0, sb.length()-1));
    }
    
    public static void drawStar(int x, int y, int len) {
        for(int i=x; i<x+len; i++)
            for(int j=y; j<y+len; j++) {
                a[i][j+len] = a[i][j];
                a[i+len][j] = a[i][j];
            }
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 10162] 전자레인지  (0) 2019.07.02
[백준 13901] 로봇  (0) 2019.07.02
[백준 10158] 개미  (0) 2019.07.02
[백준 2589] 보물섬  (0) 2019.07.02
[백준 2530] 인공지능 시계  (0) 2019.07.02
Comments