Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 구현하는 다양한 별 패턴 출력 프로그램


C, C++, Java 등 다른 프로그래밍 언어와 마찬가지로 C#에서도 중첩 반복문(nested loop)을 활용하면 다양한 별(*) 패턴을 손쉽게 출력할 수 있습니다. 별 패턴 프로그램은 반복문의 흐름과 조건 제어를 익히기에 가장 좋은 연습 예제 중 하나로 꼽힙니다.

C#으로 구현하는 다양한 별 패턴 출력 프로그램

이번 글에서는 대표적인 별 패턴 네 가지를 예제 코드와 실행 결과와 함께 하나씩 살펴보겠습니다.

1. 왼쪽 정렬 직각삼각형 패턴

가장 기본적인 형태로, 행 번호가 늘어날수록 별이 한 개씩 추가됩니다. 바깥쪽 for 문이 행을 제어하고, 안쪽 for 문이 해당 행에 출력할 별의 개수를 담당합니다.

예제

using System.IO;
using System;

class Program {
   static void Main() {
      for (int i = 1; i <= 6; ++i) {
         for (int j = 1; j <= i; ++j) {
            Console.Write("*");
         }
         Console.WriteLine();
      }
   }
}

출력 결과

*
**
***
****
*****
******

2. 오른쪽 정렬 직각삼각형 패턴

별을 출력하기 전에 공백을 먼저 찍어 삼각형이 화면 오른쪽으로 정렬되도록 만든 패턴입니다. 각 행에서 (전체 행 수 − 현재 행)만큼 공백을 출력한 뒤 별을 이어서 찍습니다.

예제

using System.IO;
using System;

class Program {
   static void Main() {
      int i, j, k;
      int n = 6;
      // 패턴을 출력하는 반복문
      for (i = 1; i <= n; i++) {
         for (j = 1; j <= n - i; j++) {
            Console.Write(" ");
         }
         for (k = 1; k <= i; k++) {
            Console.Write("*");
         }
         Console.WriteLine("");
      }
      Console.ReadLine();
   }
}

출력 결과

     *
    **
   ***
  ****
 *****
******

3. 역삼각형 패턴

첫 번째 패턴과 반대로, 첫 행에 별이 가장 많고 아래로 내려갈수록 한 개씩 줄어드는 형태입니다. 바깥쪽 반복문의 카운터를 감소시키는 방식으로 간단하게 구현할 수 있습니다.

예제

using System.IO;
using System;

class Program {
   static void Main() {
      for (int i = 6; i >= 1; --i) {
         for (int j = 1; j <= i; ++j) {
            Console.Write("*");
         }
         Console.WriteLine();
      }
   }
}

출력 결과

******
*****
****
***
**
*

4. 다이아몬드(마름모) 패턴

행마다 공백과 별의 개수를 조절해 위쪽 절반은 넓어지고 아래쪽 절반은 좁아지는 마름모 모양을 완성합니다. 중간 지점을 기준으로 공백은 줄였다 늘리고, 별의 개수는 늘렸다 줄이는 방식으로 동작합니다.

예제

using System.IO;
using System;

class Demo {
   static void Main() {
      int a = 1, spaces, k = 6, i = 0, j = 0;
      spaces = k - 1;
      for(i = 1; i < k * 2; i++) {
         for(j = 1; j <= spaces; j++) {
            Console.Write(" ");
         }
         for(j = 1; j < a * 2; j++) {
            Console.Write("*");
         }
         Console.WriteLine("");
         if(i < k) {
            spaces--;
            a++;
         } else {
            spaces++;
            a--;
         }
      }
   }
}

출력 결과

     *
    ***
   *****
  *******
 *********
***********
 *********
  *******
   *****
    ***
     *

이처럼 중첩 반복문 안에서 공백과 별의 출력 횟수만 조절하면 피라미드, 모래시계 등 다양한 응용 패턴도 자유롭게 만들 수 있습니다. 각 예제에서 반복 변수가 어떻게 변하는지 직접 추적해 보면 패턴 로직을 훨씬 빠르게 이해할 수 있습니다.