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

자바(Java)로 피라미드 패턴 출력하기: 단계별 완벽 가이드

이 글에서는 자바를 활용해 피라미드 모양의 숫자 패턴을 만드는 방법을 알아보겠습니다. 이러한 패턴은 여러 개의 for 루프print 문을 조합하여 구현할 수 있으며, 반복문 학습에 매우 유용한 예제입니다.

아래에서 실제 동작 결과를 먼저 확인해 보겠습니다.

입력 예시

행(row)의 개수: 8

출력 결과

피라미드 패턴 :
             1
           2 3 2
         3 4 5 4 3
        4 5 6 7 6 5 4
     5 6 7 8 9 8 7 6 5
   6 7 8 9 10 11 10 9 8 7 6
 7 8 9 10 11 12 13 12 11 10 9 8 7
8 9 10 11 12 13 14 15 14 13 12 11 10 9 8

알고리즘 설계

피라미드 패턴을 출력하는 전체 로직은 다음과 같은 단계로 구성됩니다.

1단계 - 프로그램 시작
2단계 - 정수형 변수 my_input, k, i, my_count, my_temp, my_spaces를 선언
3단계 - 사용자로부터 필요한 값을 입력받거나 미리 정의
4단계 - 변수 k, my_count, my_temp를 0으로 초기화
5단계 - 이중 for 루프를 사용해 문자 사이의 공백을 처리
6단계 - 가장 안쪽 루프 실행 후 또 다른 for 루프로 (i + k - 2 * my_temp) 값 출력
7단계 - 줄바꿈을 출력해 각 줄마다 지정된 개수만큼 문자 배치
8단계 - 결과 화면에 표시
9단계 - 프로그램 종료

예제 1: Scanner로 사용자 입력 받기

첫 번째 방식은 java.util.Scanner 클래스를 사용해 실행 중에 사용자가 직접 행의 개수를 입력하는 방법입니다. 입력값에 따라 매번 다른 크기의 피라미드를 출력할 수 있습니다.

import java.util.Scanner;
public class Pyramid {
    public static void main(String[] args) {
        int my_input, k, i, my_count, my_temp, my_spaces;
        my_input = 8;
        k = 0;
        my_count = 0;
        my_temp = 0;
        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 = 1; i <= my_input; ++i) {
            for (my_spaces = 1; my_spaces <= my_input - i; ++my_spaces) {
                System.out.print(" ");
                ++my_count;
            }
            while (k != 2 * i - 1) {
                if (my_count <= my_input - 1) {
                    System.out.print((i + k) + " ");
                    ++my_count;
                } else {
                    ++my_temp;
                    System.out.print((i + k - 2 * my_temp) + " ");
                }
                ++k;
            }
            my_temp = my_count = k = 0;
            System.out.println();
        }
    }
}

실행 결과

필요한 패키지가 임포트되었습니다
Scanner 객체가 생성되었습니다 
행의 개수를 입력하세요: 8
피라미드 패턴 :
             1
           2 3 2
         3 4 5 4 3
        4 5 6 7 6 5 4
     5 6 7 8 9 8 7 6 5
   6 7 8 9 10 11 10 9 8 7 6
 7 8 9 10 11 12 13 12 11 10 9 8 7
8 9 10 11 12 13 14 15 14 13 12 11 10 9 8

예제 2: 값을 미리 정의해서 출력하기

두 번째 방식은 행의 개수를 코드 안에서 미리 정의해 두고, 그 값을 콘솔에 바로 출력하는 방법입니다. 별도의 사용자 입력 없이 결과를 빠르게 확인할 수 있어 테스트 용도로 적합합니다.

public class Pyramid {
    public static void main(String[] args) {
        int my_input, k, i, my_count, my_temp, my_spaces;
        my_input = 8;
        k = 0;
        my_count = 0;
        my_temp = 0;
        System.out.println("행의 개수는 " + my_input + "으로 정의되었습니다");
        System.out.println("피라미드 패턴 : ");
        for (i = 1; i <= my_input; ++i) {
            for (my_spaces = 1; my_spaces <= my_input - i; ++my_spaces) {
                System.out.print(" ");
                ++my_count;
            }
            while (k != 2 * i - 1) {
                if (my_count <= my_input - 1) {
                    System.out.print((i + k) + " ");
                    ++my_count;
                } else {
                    ++my_temp;
                    System.out.print((i + k - 2 * my_temp) + " ");
                }
                ++k;
            }
            my_temp = my_count = k = 0;
            System.out.println();
        }
    }
}

실행 결과

행의 개수는 8으로 정의되었습니다
피라미드 패턴 :
                  1
                2 3 2
             3 4 5 4 3
           4 5 6 7 6 5 4
         5 6 7 8 9 8 7 6 5
     6 7 8 9 10 11 10 9 8 7 6
  7 8 9 10 11 12 13 12 11 10 9 8 7
8 9 10 11 12 13 14 15 14 13 12 11 10 9 8

핵심 포인트 정리

이 피라미드 패턴 프로그램의 핵심은 세 가지입니다. 첫째, 공백을 출력하는 외부 for 루프가 피라미드의 좌우 대칭 형태를 만듭니다. 둘째, while 루프 조건인 k != 2 * i - 1이 각 행에 출력될 숫자의 개수를 결정합니다. 셋째, 증가 후 감소하는 숫자 흐름은 i + ki + k - 2 * my_temp 두 수식의 조합으로 구현됩니다.

반복문의 동작 원리와 조건 분기를 익히기에 좋은 예제이므로, 직접 코드를 작성하며 행의 개수를 바꿔가며 실험해 보시길 권장합니다.