이번 글에서는 자바(Java)를 사용해 콘솔 화면에 X자 모양의 별 패턴을 출력하는 방법을 알아봅니다. 이 패턴은 여러 개의 for 반복문과 print 문을 조합하면 비교적 간단하게 구현할 수 있습니다.
먼저 실제 실행 결과부터 살펴보겠습니다.
입력 · 출력 예시
입력
사용자가 숫자 8을 입력했다고 가정해 보겠습니다.
숫자 입력 : 8
출력
위 입력에 대한 기대 결과는 다음과 같습니다.
X 별 패턴 :
X X
X X
X X
X X
X X
X X
X X
X
X X
X X
X X
X X
X X
X X
X X
알고리즘
- 시작 – 프로그램을 실행합니다.
- i, j, k, my_input 네 개의 정수 변수를 선언합니다.
- 사용자로부터 필요한 값을 입력받거나, 코드 안에 값을 직접 정의합니다.
- 'my_input × 2 − 1'의 계산 결과를 변수
k에 저장합니다. - 두 개의 중첩 for 루프를 돌며 문자 사이에 들어갈 공백을 처리합니다.
- 안쪽 루프의 반복이 끝나면, 별도의 for 루프를 통해 원하는 문자('X')를 출력합니다.
- 줄바꿈을 출력하여 각 줄마다 지정된 개수의 문자가 올바르게 배치되도록 합니다.
- 결과를 화면에 표시합니다.
- 종료
패턴의 동작 원리
전체 패턴의 크기는 입력값 n을 기준으로 k = 2n − 1개의 행과 열로 구성됩니다. 이중 for 루프를 돌면서 현재 위치(행 i, 열 j)가 다음 두 조건 중 하나를 만족할 때만 'X'를 출력하고, 그 외의 위치에는 공백을 출력합니다.
- j == i : 왼쪽 위에서 오른쪽 아래로 내려가는 대각선(\)
- j == k − i + 1 : 오른쪽 위에서 왼쪽 아래로 내려가는 대각선(/)
두 대각선이 서로 교차하면서 마치 두 개의 V자가 합쳐진 듯한 X 모양이 완성됩니다.
예제 1 – 사용자 입력값으로 출력하기
아래 예제는 Scanner 클래스를 사용해 사용자에게 숫자를 직접 입력받은 뒤, 해당 크기의 X 패턴을 출력합니다.
import java.util.Scanner;
public class XStar{
public static void main(String []args){
int i, j, k, 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("X 별 패턴 :");
k = my_input * 2 - 1;
for(i = 1; i <= k; i++){
for(j = 1; j <= k; j++){
if(j == i || j == k - i + 1)
System.out.print("X");
else
System.out.print(" ");
}
System.out.println();
}
}
}
실행 결과
필요한 패키지가 임포트되었습니다
Scanner 객체가 생성되었습니다
숫자를 입력하세요 : 8
X 별 패턴 :
X X
X X
X X
X X
X X
X X
X X
X
X X
X X
X X
X X
X X
X X
X X
예제 2 – 값이 미리 정의된 경우
아래 예제는 입력값이 코드 안에 미리 정의되어 있으며, 그 값을 읽어 콘솔에 바로 출력합니다. 테스트나 디버깅 시 유용한 방식입니다.
public class XStar{
public static void main(String []args){
int i, j, k, my_input;
my_input = 8;
System.out.println("행의 개수는 " + my_input + "(으)로 정의되었습니다");
System.out.println("X 별 패턴 :");
k = my_input * 2 - 1;
for(i = 1; i <= k; i++){
for(j = 1; j <= k; j++){
if(j == i || j == k - i + 1)
System.out.print("X");
else
System.out.print(" ");
}
System.out.println();
}
}
}
실행 결과
행의 개수는 8(으)로 정의되었습니다
X 별 패턴 :
X X
X X
X X
X X
X X
X X
X X
X
X X
X X
X X
X X
X X
X X
X X
마무리
입력값을 5, 10 등 다양한 숫자로 바꿔가며 실행해 보면, 중첩 반복문과 좌표 조건(j == i, j == k - i + 1)이 어떻게 상호작용하는지 더 깊이 이해할 수 있습니다. 이 원리를 응용하면 삼각형, 다이아몬드 등 다른 형태의 별 패턴도 손쉽게 구현할 수 있으니 꼭 직접 실습해 보시기 바랍니다.