(백준) 자바 - 2445번 별찍기 8

업데이트:

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

*        *
**      **
***    ***
****  ****
**********
****  ****
***    ***
**      **
*        *

내 코드

package com.baekjoon;

import java.util.Scanner;

public class backjoon2445 {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int star = scanner.nextInt();
     //상단 별찍기
    for(int i = 1 ; i <= star; i++) {
      for(int j = 0; j < i; j++) {
        System.out.print("*");
      }
      for(int k = 2*star-i; k > 0; k--) {
        if(k>i) {
          System.out.print(" ");
        }else {
          System.out.print("*");
        }
      }
      System.out.println();
    }

     // 하단 별찍기
    for(int i = 2; i <= star; i++) {
      for(int j = i; j <= star; j++) {
        System.out.print("*");
      }
      for(int k = 1; k < i*2-1; k++) {
        System.out.print(" ");
      }
      for(int h = star; h >= i; h--) {
        System.out.print("*");
      }
      System.out.println();
    }
    scanner.close();
  }
}

풀이

  • 처음엔 별 모양만 보고 어 쉬운데? 하고 풀었지만 어려웠던 문제.
  • 기존의 역삼각형+직삼각형 별찍기를 응용하면(별 찍는부분과 공백찍는 부분만 바꿔주면 된다) 별달리 어려울 것 없었다.
  • 하단 정삼각형 오른쪽의 4,3,2,1로 줄어드는 반쪽짜리 직삼각형이 생각보다 까다로웠다. 이 별을 찍기 위해서 결국 하단 별찍기 부분에 for문이 4개가 되고 말았다.. for문 지옥에 빠져버렸다.
  • if문을 써서 코드를 줄여보는 연구를 해봐야겠다.

댓글남기기