이 글에서는 자바(Java)를 사용하여 피라미드 모양의 별(*) 패턴을 콘솔에 출력하는 방법을 알아봅니다. 이러한 패턴은 여러 개의 for 반복문과 print 문을 조합하여 구현할 수 있습니다.
피라미드 별 패턴이란?
피라미드 패턴은 행이 하나씩 내려갈 때마다 별의 개수가 하나씩 증가하고, 왼쪽은 공백으로 채워져 전체적으로 피라미드(삼각형) 형태를 이루는 패턴입니다. 아래는 실행 결과의 예시입니다.
입력
사용자가 다음과 같이 입력했다고 가정해 보겠습니다.
행(row)의 개수 입력 : 8
출력
원하는 출력 결과는 다음과 같습니다.
피라미드 별 패턴 :
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * *
알고리즘
1단계 - 프로그램을 시작한다. 2단계 - 정수형 변수 i, j, my_input 세 개를 선언한다. 3단계 - 사용자로부터 필요한 값을 입력받거나 코드에서 값을 직접 정의한다. 4단계 - 바깥쪽 for 루프 안에서 두 개의 중첩 for 루프를 사용해 문자 사이의 공백을 처리한다. 5단계 - 가장 안쪽 루프의 순회가 끝나면 또 다른 for 루프를 통해 필요한 문자(*)를 출력한다. 6단계 - 줄바꿈을 출력하여 다음 줄부터 지정된 개수의 문자가 새로운 위치에 표시되도록 한다. 7단계 - 결과를 화면에 표시한다. 8단계 - 프로그램을 종료한다.
코드의 동작 원리
위 로직의 핵심은 세 개의 루프가 각각 담당하는 역할을 구분하는 것입니다.
- 바깥쪽 루프(i) : 전체 행의 개수(my_input)만큼 반복하며 각 행을 생성합니다.
- 첫 번째 내부 루프(j) : i번째 행에서 왼쪽에 들어갈 공백(my_input - i개)을 출력합니다.
- 두 번째 내부 루프(j) : 해당 행에 표시될 별(i + 1개)을 출력합니다.
각 행의 출력이 끝날 때마다 줄바꿈을 해 주면 별이 계단식으로 쌓여 피라미드 모양이 완성됩니다.
예제 1 - 사용자 입력으로 행 개수 받기
다음 예제는 Scanner 클래스를 사용해 사용자로부터 행의 개수를 직접 입력받아 패턴을 출력합니다.
import java.util.Scanner;
public class Pyramid{
public static void main(String args[]){
int i, j, my_input;
System.out.println("필요한 패키지가 임포트되었습니다.");
Scanner my_scanner = new Scanner(System.in);
System.out.println("reader 객체가 생성되었습니다.");
System.out.print("행의 개수를 입력하세요 : ");
my_input = my_scanner.nextInt();
System.out.println("피라미드 별 패턴 : ");
for (i = 0; i < my_input; i++){
for (j = my_input - i; j > 1; j--){
System.out.print(" ");
}
for (j = 0; j <= i; j++){
System.out.print("* ");
}
System.out.println();
}
}
}
출력 결과
필요한 패키지가 임포트되었습니다.
reader 객체가 생성되었습니다.
행의 개수를 입력하세요 : 8
피라미드 별 패턴 :
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * *
예제 2 - 값이 미리 정의된 경우
다음 예제에서는 행의 개수가 코드 안에서 미리 정의되어 있으며, 그 값을 그대로 사용해 콘솔에 패턴을 출력합니다.
public class Pyramid{
public static void main(String args[]){
int i, j, my_input;
my_input = 8;
System.out.println("행의 개수는 " + my_input + "(으)로 정의되었습니다.");
System.out.println("피라미드 별 패턴 : ");
for (i = 0; i < my_input; i++){
for (j = my_input - i; j > 1; j--){
System.out.print(" ");
}
for (j = 0; j <= i; j++){
System.out.print("* ");
}
System.out.println();
}
}
}
출력 결과
행의 개수는 8(으)로 정의되었습니다.
피라미드 별 패턴 :
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * *
마무리
중첩 for 루프만으로도 손쉽게 피라미드 별 패턴을 만들 수 있습니다. 공백 루프와 별 루프의 반복 횟수만 조절하면 역피라미드, 다이아몬드 등 다양한 패턴으로 확장할 수 있으니 직접 변형해 보시기 바랍니다.