(백준) 자바 - 2442번 별찍기 5

업데이트:

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, …, N번째 줄에는 별 2×N-1개를 찍는 문제

별은 가운데를 기준으로 대칭이어야 한다.

입력

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

출력

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

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

내 코드

package com.baekjoon;

import java.util.Scanner;

public class backjoon2442 {
  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 = i; j < star; j++) {
        System.out.print(" ");
      }
       
		// 별찍기
      for(int k = 0; k < i*2-1; k++) {
        System.out.print("*");
      }
		//줄바꿈
      System.out.println();
    }
    scanner.close();
  }
}

풀이

  • 원래 숫자의 시작을 0부터 하는 것을 좋아하지만 i를 1로 설정한 이유는, i를 0부터 시작하면 별찍기 for문에서 첫 i*2가 음수가 나오기때문이다. 그래서 1부터 시작하는 것으로 한다.
  • 공백찍는 for문은 j=i로 설정해주면 간단하다.
  • 문제에서 가운데를 기준으로 대칭이여야 한다는 말에 헷갈리지 말고, 오로지 찍힌 별의 갯수만 세어보자. 1,3,5,7,9… 즉 홀수만 나오고 있다. 홀수는 어떤수든 곱하기 2해서 1을 빼면 된다. 최종적으로 공식은 i*2-1 이된다.
  • 공백과 별찍기가 다 끝났다면 줄바꿈한다.

댓글남기기