Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)로 미러 하단 별 삼각형 패턴 출력하는 방법


이 글에서는 자바(Java)를 활용해 미러 하단 별 삼각형(mirror lower star triangle) 패턴을 출력하는 방법을 알아봅니다. 이 패턴은 여러 개의 for 반복문과 print 문을 조합해 만들 수 있으며, 중첩 반복문의 동작 원리를 익히기 좋은 대표적인 연습 예제입니다.

입력·출력 예시

입력

사용자가 아래와 같이 행(row)의 개수를 입력한다고 가정해 보겠습니다.

Enter the number of rows : 8

출력

위 입력값에 대한 기대 출력 결과는 다음과 같습니다.

The mirror lower star triangle pattern :
* * * * * * * *
 * * * * * * *
  * * * * * *
   * * * * *
    * * * *
     * * *
      * *
       *
       *
      * *
     * * *
    * * * *
   * * * * *
  * * * * * *
 * * * * * * *
* * * * * * * *

알고리즘

프로그램의 전체적인 동작 흐름은 다음과 같습니다.

  1. 시작(START)합니다.
  2. 정수 변수 i, j, k와 my_input을 선언합니다.
  3. 사용자로부터 필요한 값을 입력받거나, 값을 미리 정의합니다.
  4. 두 개의 중첩 for 반복문을 순회하며 문자 앞에 들어갈 공백을 출력합니다.
  5. 안쪽 반복문이 끝나면 또 다른 for 반복문을 통해 '*' 문자를 출력합니다.
  6. 한 줄의 출력이 끝날 때마다 줄바꿈을 수행해 각 줄에 지정된 개수의 문자가 표시되도록 합니다.
  7. 완성된 패턴을 화면에 표시합니다.
  8. 종료(STOP)합니다.

패턴 생성 원리

미러 하단 별 삼각형은 상하 대칭 구조를 가지고 있습니다. 위쪽 절반에서는 행 번호가 증가할수록 선행 공백이 하나씩 늘어나고 별의 개수는 하나씩 줄어듭니다. 아래쪽 절반에서는 그 반대로 공백이 줄어들고 별이 늘어나면서 마치 거울에 비친 것처럼 대칭을 이룹니다. 이러한 규칙을 두 개의 반복문 블록으로 구현하면 됩니다.

예제 1 - 사용자 입력으로 출력하기

아래 예제에서는 Scanner 객체를 사용해 사용자로부터 행의 개수를 입력받은 뒤 패턴을 출력합니다.

import java.util.Scanner;
public class MirrorTriangle{
   public static void main(String args[]){
      int i, j, k, my_input;
      System.out.println("Required packages have been imported");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("A reader object has been defined ");
      System.out.print("Enter the number of rows : ");
      my_input = my_scanner.nextInt();
      System.out.println("The Mirror Lower Star Triangle pattern : ");
      for (i = 1; i <= my_input; i++) {
         for (j = 1; j < i; j++) {
            System.out.print(" ");
         }
         for (j = i; j <= my_input; j++) {
            System.out.print("*" + " ");
         }
         System.out.println();
      }
      for (i = my_input - 1; i >= 0; i--) {
         for (j = 0; j < i; j++) {
            System.out.print(" ");
         }
         for (j = i; j <= my_input - 1; j++) {
            System.out.print("*" + " ");
         }
         System.out.println();
      }
   }
}

출력 결과

Required packages have been imported
A reader object has been defined
Enter the number of rows : 8
The Mirror Lower Star Triangle pattern :
* * * * * * * *
 * * * * * * *
  * * * * * *
   * * * * *
    * * * *
     * * *
      * *
       *
       *
      * *
     * * *
    * * * *
   * * * * *
  * * * * * *
 * * * * * * *
* * * * * * * *

예제 2 - 값이 미리 정의된 경우

아래 예제에서는 행의 개수가 코드 안에 미리 정의되어 있으며, 이 값을 그대로 사용해 콘솔에 패턴을 출력합니다.

public class MirrorTriangle{
   public static void main(String args[]){
      int i, j, k, my_input;
      my_input = 8;
      System.out.println("The number of rows is defined as " +my_input);
      System.out.println("The mirror lower star triangle pattern : ");
      for (i = 1; i <= my_input; i++) {
         for (j = 1; j < i; j++) {
            System.out.print(" ");
         }
         for (j = i; j <= my_input; j++) {
            System.out.print("*" + " ");
         }
         System.out.println();
      }
      for (i = my_input - 1; i >= 0; i--) {
         for (j = 0; j < i; j++) {
            System.out.print(" ");
         }
         for (j = i; j <= my_input - 1; j++) {
            System.out.print("*" + " ");
         }
         System.out.println();
      }
   }
}

출력 결과

The number of rows is defined as 8
The mirror lower star triangle pattern :
* * * * * * * *
 * * * * * * *
  * * * * * *
   * * * * *
    * * * *
     * * *
      * *
       *
       *
      * *
     * * *
    * * * *
   * * * * *
  * * * * * *
 * * * * * * *
* * * * * * * *

마무리

지금까지 자바의 중첩 for 반복문을 활용해 미러 하단 별 삼각형 패턴을 출력하는 두 가지 방법을 살펴보았습니다. Scanner로 사용자 입력을 받는 방식과 값을 미리 정의해 두는 방식 모두 동일한 반복문 구조를 사용하므로, 상황에 맞게 골라 활용하시면 됩니다. 공백과 별의 개수 규칙만 이해하면 피라미드, 다이아몬드 등 다양한 패턴으로 손쉽게 확장할 수 있습니다.