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

C# 중첩 루프를 활용해 다이아몬드 패턴 출력하는 방법

C#에서는 중첩 루프(nested loop)를 활용하면 콘솔 화면에 다음과 같은 다이아몬드 모양을 손쉽게 출력할 수 있습니다.

$
$$$
$$$$$
$$$$$$$
$$$$$$$$$
$$$$$$$
$$$$$
$$$
$

다이아몬드 패턴의 핵심 요소

다이아몬드 형태를 완성하려면 아래 세 가지 요소를 먼저 파악해야 합니다.

  • 행(Row)의 개수 — 다이아몬드의 전체 크기를 결정합니다.
  • 출력할 기호 — 이번 예제에서는 달러 기호($)를 사용합니다.
  • 공백(Empty Space) — 기호 앞에 배치되어 다이아몬드의 대칭 구조를 만듭니다.

위 요소들을 고려하면, 상단 절반에서는 공백이 줄어들고 기호가 늘어나며, 하단 절반에서는 그 반대로 동작하도록 루프를 구성하면 됩니다.

예제 코드

using System;
namespace Program {
   public class Demo {
      public static void Main(String[] args) {
         int i, j, r, d, e;

         // 행(row) 개수 = 5
         r = 5;

         // 출력할 달러 기호 개수
         d = 1;

         // 빈 공백 개수
         e = r - 1;

         for (i = 1; i < r * 2; i++) {
            // 공백 출력
            for (j = 1; j <= e; j++)
            Console.Write(" ");

            // 달러 기호 출력
            for (j = 1; j < d * 2; j++)
            Console.Write("$");

            Console.WriteLine();

            // 상단 절반과 하단 절반을 구분하여 값 조절
            if (i < r) {
               e--;
               d++;
            } else {
               e++;
               d--;
            }
         }

      }
   }
}

코드 동작 원리

바깥쪽 for 루프는 총 r * 2 - 1회, 즉 9행을 반복합니다. 각 행마다 안쪽 첫 번째 루프가 선행 공백을 출력하고, 두 번째 루프가 홀수 개수(1, 3, 5, 7, 9…)의 달러 기호를 출력합니다.

행 번호 i가 중심 행(r)보다 작으면 공백 수 e는 감소하고 기호 수 d는 증가해 다이아몬드의 윗부분이 넓어집니다. 반대로 중심 행 이후에는 공백이 증가하고 기호가 감소하면서 아랫부분이 좁아지며 완전한 대칭 구조가 만들어집니다.

실행 결과

$
$$$
$$$$$
$$$$$$$
$$$$$$$$$
$$$$$$$
$$$$$
$$$
$