이번 글에서는 거꾸로 된 별(*) 패턴, 즉 위는 넓고 아래로 갈수록 좁아지는 역삼각형 모양의 패턴을 출력하는 방법을 살펴보겠습니다. 이 패턴은 여러 개의 for 반복문과 출력 문장을 조합하면 손쉽게 만들 수 있습니다.
입력 및 출력 예시
사용자가 크기로 8을 입력했다고 가정하면, 프로그램은 아래와 같은 모양의 패턴을 출력합니다.
입력:
Enter the size : 8
출력:
The inverted star pattern
***************
*************
***********
*********
*******
*****
***
*
알고리즘
- 프로그램을 시작합니다.
- 정수형 변수 i, j, k와 my_input을 선언합니다.
- 사용자로부터 필요한 값을 입력받거나, 값을 코드에 직접 정의합니다.
- 두 개의 중첩
for반복문을 돌며 각 행 앞에 들어갈 공백을 출력합니다. - 공백 출력이 끝나면 또 다른
for반복문으로 별(*) 문자를 출력합니다. - 한 행이 끝날 때마다 줄바꿈을 출력하여 다음 줄로 넘어갑니다.
- 최종 결과를 화면에 표시합니다.
- 프로그램을 종료합니다.
패턴의 동작 원리
크기가 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
***************
*************
***********
*********
*******
*****
***
*
마무리
중첩 반복문의 동작 원리만 이해하면 별 패턴뿐 아니라 숫자 피라미드, 다이아몬드 패턴 등 다양한 형태로 응용할 수 있습니다. 위 예제에서 반복문의 범위와 출력 문자를 바꿔가며 직접 연습해 보시길 권합니다.