이 글에서는 자바(Java)를 사용해 미러 상단 별 삼각형 패턴(mirror upper star triangle pattern)을 출력하는 방법을 소개합니다. 이 패턴은 여러 개의 for 반복문과 출력문을 조합하면 손쉽게 만들 수 있으며, 첫 줄에는 별이 가득 차 있고 아래로 내려갈수록 왼쪽 공백이 하나씩 늘어나면서 별의 개수가 줄어드는 계단식 모양이 됩니다.
다음은 실행 결과 예시입니다.
입력
사용자가 행의 개수로 8을 입력했다고 가정해 보겠습니다.
행의 개수 입력 : 8
출력
원하는 출력 결과는 다음과 같습니다.
미러 위쪽 별 패턴 :
********
*******
******
*****
****
***
**
*알고리즘
- 프로그램을 시작합니다.
- 정수형 변수 i, j, k, my_input 네 개를 선언합니다.
- 사용자로부터 필요한 값을 입력받거나 값을 직접 정의합니다.
- 문자 사이의 공백을 만들기 위해 외부 for 반복문 안에서 두 개의 중첩 for 반복문을 실행합니다.
- 가장 안쪽 반복문이 끝나면 또 다른 for 반복문을 실행해 필요한 문자(*)를 출력합니다.
- 줄바꿈을 출력해 다음 줄에는 지정된 개수만큼의 문자가 표시되도록 합니다.
- 결과를 화면에 표시합니다.
- 프로그램을 종료합니다.
패턴의 원리
이 패턴은 크게 세 부분으로 나눌 수 있습니다. 바깥쪽 for 반복문은 각 줄을 담당하며, i가 전체 행 개수(my_input)부터 1까지 감소합니다. 첫 번째 내부 반복문은 (my_input − i)개의 공백을 출력해 오른쪽으로 밀린 듯한 모양을 만들고, 두 번째 내부 반복문은 i개의 별(*)을 출력합니다. 마지막으로 println()으로 줄바꿈을 하면 한 줄이 완성됩니다.
예제 1 : 사용자 입력 받기
다음 예제는 Scanner 클래스를 사용해 사용자로부터 행의 개수를 입력받은 뒤 패턴을 출력합니다.
import java.util.Scanner;
public class MirrorTriangle{
public static void main(String args[]){
int i, j, k, my_input;
Scanner my_scanner = new Scanner(System.in);
System.out.print("행의 개수를 입력하세요 : ");
my_input = my_scanner.nextInt();
System.out.println("미러 위쪽 별 패턴:");
for (i= my_input; i>= 1; i--){
for (j=my_input; j>i;j--){
System.out.print(" ");
}
for (k=1;k<=i;k++){
System.out.print("*");
}
System.out.println("");
}
}
}출력 결과
행의 개수를 입력하세요 : 8
미러 위쪽 별 패턴:
********
*******
******
*****
****
***
**
*예제 2 : 값 미리 정의하기
다음 예제에서는 행의 개수가 코드 안에 미리 정의되어 있으며, 프로그램을 실행하면 해당 값과 함께 패턴이 콘솔에 출력됩니다.
public class MirrorTriangle{
public static void main(String args[]){
int i, j, k, my_input;
my_input = 8;
System.out.println("행의 개수는 " + my_input + "으로 정의되어 있습니다.");
System.out.println("미러 위쪽 별 패턴:");
for (i= my_input; i>= 1; i--){
for (j=my_input; j>i;j--){
System.out.print(" ");
}
for (k=1;k<=i;k++){
System.out.print("*");
}
System.out.println("");
}
}
}출력 결과
행의 개수는 8으로 정의되어 있습니다.
미러 위쪽 별 패턴:
********
*******
******
*****
****
***
**
*마무리
지금까지 자바의 중첩 반복문을 활용해 미러 상단 별 삼각형 패턴을 출력하는 두 가지 방법을 살펴보았습니다. 공백과 별의 개수를 조절하는 규칙만 이해하면 피라미드, 다이아몬드 등 다양한 패턴으로도 쉽게 응용할 수 있습니다.