C#

C# 콘솔로 크리스마스 트리 그리기: 단계별 가이드

Wally's 2024. 10. 11. 02:02

이번 블로그에서는 C#으로 콘솔에 크리스마스트리를 출력하는 방법을 설명하고,

단계별로 쉽게 따라할 수 있도록 예제 코드를 제공합니다.


 

목차

  1. 크리스마스 트리 구조 분석
  2. C#으로 크리스마스 트리 그리기 기본 원리
  3. 크리스마스트리 출력 예제 코드
  4. 추가 도전: 트리 꾸미기

1. 크리스마스 트리 구조 분석

크리스마스트리를 콘솔에 그리기 위해서는 트리의 모양패턴을 먼저 분석하는 것이 중요합니다. 크리스마스트리는 대체로 다음과 같은 구조로 이루어집니다:

  • 트리의 각 줄은 삼각형 모양을 이루며, 윗부분에서 아래로 갈수록 이 넓어집니다.
  • 각 줄의 왼쪽에는 일정한 공백이 존재하고, 가운데에는 **별 모양(*)**이 점차적으로 증가합니다.
  • 트리 아래에는 줄기가 위치합니다.

간단히 말해서, 각 줄의 별 개수는 줄의 번호에 비례해서 증가하며, 공백은 반대로 줄의 번호에 비례해서 줄어듭니다.

 

 


 

2. C#으로 크리스마스 트리 그리기 기본 원리

C# 콘솔에서 크리스마스 트리를 그리려면 반복문과 문자열 연산을 적절히 사용해야 합니다.

각 줄에서 출력되는 공백과 별의 개수를 제어하기 위해 for 루프를 사용합니다. 루프를 돌면서 줄 번호에 따라 출력되는 별과 공백의 개수를 계산합니다.

 

트리를 그리기 위한 기본 원리:

  • 공백: 각 줄에 대해, (전체 높이 - 현재 줄 번호)만큼 출력합니다.
  • 별(*): (2 * 현재 줄 번호 - 1)만큼 출력합니다.  삼각형의 좌우 대칭을 이루기 위해 별이 홀수 개로 출력되게 하는 공식입니다.

3. 크리스마스 트리 출력 예제 코드

이제 C# 콘솔 프로그램에서 크리스마스트리를 그리는 코드를 작성해 보겠습니다. 이 코드는 사용자로부터 트리의 높이를 입력받아 그에 맞는 크기의 트리를 출력합니다.

using System;

class ChristmasTree
{
    static void Main()
    {
        // 트리의 높이를 사용자로부터 입력받습니다.
        Console.Write("크리스마스 트리의 높이를 입력하세요: ");
        int treeHeight = int.Parse(Console.ReadLine());

        // 트리 부분 그리기
        for (int i = 1; i <= treeHeight; i++)
        {
            // 공백 출력: 트리 중심을 맞추기 위해 앞에 공백을 출력합니다.
            for (int j = 1; j <= treeHeight - i; j++)
            {
                Console.Write(" ");
            }

            // 별 출력: 줄 번호에 따라 별을 홀수 개 출력합니다.
            for (int k = 1; k <= (2 * i - 1); k++)
            {
                Console.Write("*");
            }

            // 한 줄을 그린 후 줄바꿈을 합니다.
            Console.WriteLine();
        }

        // 트리의 줄기 부분 그리기
        for (int i = 0; i < treeHeight / 2; i++)
        {
            // 줄기의 위치를 맞추기 위해 공백을 출력합니다.
            for (int j = 1; j < treeHeight; j++)
            {
                Console.Write(" ");
            }

            // 트리의 줄기 출력
            Console.WriteLine("|");
        }
    }
}

 

출력 예시

크리스마스 트리의 높이를 입력하세요: 5
    *
   ***
  *****
 *******
*********
    |
    |

 

 


4. 추가 도전: 트리 꾸미기

위에서 기본적인 크리스마스 트리를 출력하는 방법을 배웠다면, 이제 트리를 꾸며보는 추가 도전을 해볼 수 있습니다.

트리에 장식, 색깔 등을 추가하여 트리를 더 화려하게 꾸밀 수 있습니다.

 

트리의 별 대신 무작위로 @, O, * 같은 문자로 장식을 추가할 수 있습니다.

아래는 간단한 장식이 추가된 크리스마스 트리 출력 코드입니다.

using System;

class ChristmasTreeWithDecoration
{
    static void Main()
    {
        Console.Write("크리스마스 트리의 높이를 입력하세요: ");
        int treeHeight = int.Parse(Console.ReadLine());
        Random random = new Random();

        // 트리 그리기
        for (int i = 1; i <= treeHeight; i++)
        {
            for (int j = 1; j <= treeHeight - i; j++)
            {
                Console.Write(" ");
            }

            for (int k = 1; k <= (2 * i - 1); k++)
            {
                // 랜덤으로 장식 추가
                char decoration = random.Next(0, 4) == 0 ? '@' : '*';
                Console.Write(decoration);
            }

            Console.WriteLine();
        }

        // 트리의 줄기 출력
        for (int i = 0; i < treeHeight / 2; i++)
        {
            for (int j = 1; j < treeHeight; j++)
            {
                Console.Write(" ");
            }
            Console.WriteLine("|");
        }
    }
}
 

실행 예시 :

크리스마스 트리의 높이를 입력하세요: 5
    *
   *@*
  *@*@*
 **@@@**
*******@
    |
    |

 

 

 

*위 내용 오타 및 수정해야 하는 내용 있으면 댓글로 알려주시면 감사합니다.