개요
이 글에서는 자바(Java)를 이용해 피라미드 모양의 별(*) 패턴을 콘솔에 출력하는 방법을 알아봅니다. 피라미드 패턴은 여러 개의 for 반복문과 출력문을 조합하면 손쉽게 만들 수 있으며, 중첩 루프의 동작 원리를 익히기에 가장 좋은 기본 예제 중 하나입니다.
실행 결과 미리 보기
입력
예를 들어 행의 개수로 8을 입력했다고 가정해 보겠습니다.
행의 개수 입력 : 8
출력
그러면 아래와 같이 아래로 갈수록 별이 한 개씩 늘어나는 피라미드 패턴이 출력됩니다.
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
알고리즘
피라미드 별 패턴을 출력하는 전체 절차는 다음과 같습니다.
- 시작 — 프로그램을 시작합니다.
- 정수형 변수
i,j,my_input을 선언합니다. - 사용자로부터 행의 개수를 입력받거나, 코드 안에 값을 미리 정의합니다.
- 두 개의 중첩
for반복문을 사용해 별 앞에 들어갈 공백을 처리합니다. - 공백 출력이 끝나면 또 다른
for반복문으로 별(*) 문자를 출력합니다. - 줄바꿈을 출력해 다음 행이 새로운 줄에서 시작되도록 합니다.
- 결과를 화면에 표시합니다.
- 종료 — 프로그램을 마무리합니다.
핵심 로직 설명
- 바깥쪽 루프(i): 전체 행의 개수를 결정합니다.
i가 0부터my_input - 1까지 증가하며 각 행을 순서대로 처리합니다. - 첫 번째 안쪽 루프(j): 현재 행에서 필요한 만큼 공백을 출력해 왼쪽 여백을 만들고, 이를 통해 피라미드의 대칭 모양을 완성합니다.
- 두 번째 안쪽 루프(j): 현재 행 번호보다 하나 많은 개수의 별(*)과 공백을 출력합니다.
- 줄바꿈 처리: 한 행의 출력이 끝날 때마다
println()으로 커서를 다음 줄로 이동시킵니다.
예제 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("Scanner 객체가 생성되었습니다.");
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();
}
}
}
출력 결과
필요한 패키지가 모두 임포트되었습니다.
Scanner 객체가 생성되었습니다.
행의 개수를 입력하세요 : 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(으)로 정의되어 있습니다.
피라미드 별 패턴 :
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
마무리
이처럼 중첩 반복문만 제대로 활용하면 별도의 라이브러리 없이도 다양한 형태의 별 패턴을 출력할 수 있습니다. 공백과 별의 개수 규칙을 이해하고 나면 역삼각형, 다이아몬드, 모래시계 패턴 등으로도 손쉽게 확장할 수 있으니, 위 코드를 직접 변형해 연습해 보시기 바랍니다.