이번 블로그에서는 C#으로 콘솔에 크리스마스트리를 출력하는 방법을 설명하고,
단계별로 쉽게 따라할 수 있도록 예제 코드를 제공합니다.
목차
- 크리스마스 트리 구조 분석
- C#으로 크리스마스 트리 그리기 기본 원리
- 크리스마스트리 출력 예제 코드
- 추가 도전: 트리 꾸미기
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
*
*@*
*@*@*
**@@@**
*******@
|
|
*위 내용 오타 및 수정해야 하는 내용 있으면 댓글로 알려주시면 감사합니다.
'C#' 카테고리의 다른 글
C# Lazy 완벽 가이드 (0) | 2025.03.16 |
---|---|
C#에서 MaxLength 속성을 사용한 유효성 검증: 실용 가이드 (1) | 2024.10.16 |
C# string 초기화 안하면 경고 나타나는 이유 (0) | 2023.05.28 |
C# for문, foreach 문 (0) | 2023.05.28 |