ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 피라미드 만들기
    자바 Java/자바로 알고리즘 2021. 11. 24. 23:30

     

    숫자를 입력한 숫자 높이의 별 무늬 피라미드 만들기

    <Main>

    public class Main {
        public static void main(String[] args) {
            ShapePrinter printer = new ShapePrinter();
    
            // 테스트
            printer.printPyramid(3);
            System.out.println("----------");
            printer.printPyramid(5);
            System.out.println("----------");
            printer.printPyramid(10);
        }
    }

    <출력결과>

      *
     ***
    *****
    ----------
        *
       ***
      *****
     *******
    *********
    ----------
             *
            ***
           *****
          *******
         *********
        ***********
       *************
      ***************
     *****************
    *******************

     

     

    <나의 답안>

    public class ShapePrinter {
        public void printPyramid(int height) {
    
            for(int column = 1; column <= height; column++) {
                for(int row = 1; row <= height-column; row++) {
                    System.out.print(" ");
                }
                for(int row = 1; row <= 2*column-1; row++) {
                    System.out.print("*");
                }
                System.out.println();
            }
             
        }
    }

     

    1. 큰 틀 생성

     for(int column = 1; column <= height; column++) {
     
     
     }

    파라미터로 입력받은 높이(height)만큼 출력해야 하므로

    height만큼 반복할 예정

     

     

     

    2. 별 앞에 들어갈 공백 출력문

    for(int row = 1; row <= height-column; row++) {
        System.out.print(" ");
    }

    가로로 출력될거니까 흔히 쓰는 i 대신 row라고 이름을 붙였다.

     

    피라미드 높이(height)를 5라고 가정했을 때

    1번째줄(column)의 공백은 4개

    2번째줄의 공백은 3개

    3번째줄의 공백은 2개

    그러므로 각 줄의 공백은 height - column (높이 - n번째줄) 만큼 반복하여 생성

     

     

     

     

    3. 줄마다 갯수 맞춘 별 출력문

     for(int row = 1; row <= 2*column-1; row++) {
    	System.out.print("*");
    }
    System.out.println();

    1번째줄은 별이 1개, 2번째줄은 3개, 3번째줄은 별이 5개....

    이를 공식으로 만들면, 2*column-1 ( 2 * n번째줄 -1 )

     

    별까지 한줄 출력이 완료되면 줄바꿔주기

     

     

     

     

    4. 공백출력문과 별출력문을 큰 틀 안에 넣어주면 완성

    for(int column = 1; column <= height; column++) {
        for(int row = 1; row <= height-column; row++) {
            System.out.print(" ");
        }
        for(int row = 1; row <= 2*column-1; row++) {
            System.out.print("*");
        }
        System.out.println();
    }
Designed by Tistory.