Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)로 X자 별 패턴 출력하기 – 알고리즘과 예제 코드 총정리


이번 글에서는 자바(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

알고리즘

  1. 시작 – 프로그램을 실행합니다.
  2. i, j, k, my_input 네 개의 정수 변수를 선언합니다.
  3. 사용자로부터 필요한 값을 입력받거나, 코드 안에 값을 직접 정의합니다.
  4. 'my_input × 2 − 1'의 계산 결과를 변수 k에 저장합니다.
  5. 두 개의 중첩 for 루프를 돌며 문자 사이에 들어갈 공백을 처리합니다.
  6. 안쪽 루프의 반복이 끝나면, 별도의 for 루프를 통해 원하는 문자('X')를 출력합니다.
  7. 줄바꿈을 출력하여 각 줄마다 지정된 개수의 문자가 올바르게 배치되도록 합니다.
  8. 결과를 화면에 표시합니다.
  9. 종료

패턴의 동작 원리

전체 패턴의 크기는 입력값 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)이 어떻게 상호작용하는지 더 깊이 이해할 수 있습니다. 이 원리를 응용하면 삼각형, 다이아몬드 등 다른 형태의 별 패턴도 손쉽게 구현할 수 있으니 꼭 직접 실습해 보시기 바랍니다.