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

자바(Java)로 거꾸로 된 별(*) 패턴 출력하기 – 알고리즘과 예제 코드

이번 글에서는 거꾸로 된 별(*) 패턴, 즉 위는 넓고 아래로 갈수록 좁아지는 역삼각형 모양의 패턴을 출력하는 방법을 살펴보겠습니다. 이 패턴은 여러 개의 for 반복문과 출력 문장을 조합하면 손쉽게 만들 수 있습니다.

입력 및 출력 예시

사용자가 크기로 8을 입력했다고 가정하면, 프로그램은 아래와 같은 모양의 패턴을 출력합니다.

입력:

Enter the size : 8

출력:

The inverted star pattern
***************
 *************
  ***********
   *********
    *******
     *****
      ***
       *

알고리즘

  1. 프로그램을 시작합니다.
  2. 정수형 변수 i, j, k와 my_input을 선언합니다.
  3. 사용자로부터 필요한 값을 입력받거나, 값을 코드에 직접 정의합니다.
  4. 두 개의 중첩 for 반복문을 돌며 각 행 앞에 들어갈 공백을 출력합니다.
  5. 공백 출력이 끝나면 또 다른 for 반복문으로 별(*) 문자를 출력합니다.
  6. 한 행이 끝날 때마다 줄바꿈을 출력하여 다음 줄로 넘어갑니다.
  7. 최종 결과를 화면에 표시합니다.
  8. 프로그램을 종료합니다.

패턴의 동작 원리

크기가 n일 때, 각 단계별로 출력되는 문자의 개수는 다음 규칙을 따릅니다.

  • 공백: (n − i)개 — 줄이 내려갈수록 1개씩 늘어납니다.
  • 별(*): (2 × i − 1)개 — 줄이 내려갈수록 2개씩 줄어듭니다.

예를 들어 n = 8이면 첫째 줄에 별 15개가 출력되고, 마지막 줄에는 별 1개만 남아 피라미드가 뒤집힌 형태가 됩니다.

예제 1: Scanner로 사용자 입력 받기

아래 예제는 Scanner 객체를 사용해 사용자에게 크기를 직접 입력받은 뒤 패턴을 출력합니다. 온라인 코딩 도구에서 직접 실행해 볼 수도 있습니다.

import java.util.Scanner;
public class InvertedStar{
   public static void main(String[] args){
      int my_input, k, i, j;
      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 size : ");
      my_input = my_scanner.nextInt();
      System.out.println("The inverted star pattern");
      for ( i = my_input ; i >= 1; i-- ){
         for ( j = 0 ; j < my_input - i; j++ ){
            System.out.print(" ");
         }
         for ( k = 0 ; k != (2 * i) - 1; k++ ){
            System.out.print("*");
         }
         System.out.println();
      }
   }
}

실행 결과

Required packages have been imported
A reader object has been defined
Enter the size : 8
The inverted star pattern
***************
 *************
  ***********
   *********
    *******
     *****
      ***
       *

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

이번에는 사용자 입력 없이 정수값을 코드 안에서 미리 정의하고, 그 값을 기준으로 패턴을 바로 출력하는 방식입니다.

public class InvertedStar{
    public static void main(String[] args){
        int my_input, k, i, j;
        char my_character;
        my_input = 8;
        System.out.println("The size is defined as " + my_input);
        System.out.println("The inverted star pattern");
        for ( i = my_input ; i >= 1; i-- ){
            for ( j = 0 ; j < my_input - i; j++ ){
                System.out.print(" ");
            }
            for ( k = 0 ; k != (2 * i) - 1; k++ ){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

실행 결과

The size is defined as 8
The inverted star pattern
***************
 *************
  ***********
   *********
    *******
     *****
      ***
       *

마무리

중첩 반복문의 동작 원리만 이해하면 별 패턴뿐 아니라 숫자 피라미드, 다이아몬드 패턴 등 다양한 형태로 응용할 수 있습니다. 위 예제에서 반복문의 범위와 출력 문자를 바꿔가며 직접 연습해 보시길 권합니다.