Dev.baelanche

[백준 10997] 별 찍기 - 22 본문

Data Structure & Algorithm/PS - JAVA

[백준 10997] 별 찍기 - 22

baelanche 2019. 6. 19. 21:17
반응형

 

 

단순 구현 문제다.

반복문 두번으로 가로줄, 세로줄을 긋고 두번째 줄을 예외처리 하는 방법으로 풀었다.

 

두번째 줄은 공백이 없으니 이 부분 주의해야한다..!

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        
        int width = 1 + (n-1)*4;
        int height = 1;
        
        for(int i=0; i<n-1; i++) {
            if(i == 0) height += 6;
            else height += 4;
        }
        
        char a[][] = new char[height][width];
        
        for(int i=0; i<height; i++)
            for(int j=0; j<width; j++)
                a[i][j] = ' ';
        
        int left = 0;
        int right = width;
        int top = 0;
        int bottom = height;
        for(int i=0; i<height; i++) {
            for(int j=0; j<width; j++) {
                if(i % 2 == 0) {
                    if(j >= left && j < right)
                        a[i][j] = '*';
                }
            }
            if(i < height/2) {
                left++;
                if(i > 1)
                    right--;
            } else {
                if(i == height/2) right = height/2 - 1;
                left--;
                right++;
            }
        }
        
        for(int i=0; i<width; i++) {
            for(int j=0; j<height; j++) {
                if(i % 2 == 0) {
                    if(j >= top && j < bottom)
                        a[j][i] = '*';
                    if(i == width-1 && j == 1)
                        a[j][i] = ' ';
                }
            }
            if(i < width/2) {
                top++;
                bottom--;
            } else {
                if(i == width/2) top = width/2 + 2;
                top--;
                bottom++;
            }
        }
        
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<height; i++) {
            for(int j=0; j<width; j++) {
                if(i == 1) {
                    sb.append(a[i][0]);
                    break;
                }
                sb.append(a[i][j]);
            }
            sb.append("\n");
        }
        System.out.println(sb.toString());
    }
}

 

 

처음으로 문제집을 끝냈다!!~~

반응형

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

[백준 14889] 스타트와 링크  (0) 2019.06.20
[백준 문제집] N과 M 시리즈  (0) 2019.06.19
[백준 10993] 별 찍기 - 18  (0) 2019.06.18
[백준 10757] 큰 수 A+B  (0) 2019.06.18
[백준 1965] 상자넣기  (0) 2019.06.18
Comments