1 분 소요

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

image

입력과 출력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력은 다음과 같다.

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


풀이 과정

모양을 반으로 나눠서 각각 따로 그린다.

image


위의 빨간 부분부터 보면

각 줄은 입력받은 숫자 - 1 만큼의 공백과 각 줄의 순서 * 2 - 1의 별로 이루어져 있음을 볼 수 있다.

이를 for문을 통해 표현하면 다음과 같다.

int input = int.Parse(Console.ReadLine());

// 1층부터 입력받은 숫자 층까지 반복
for (int i = 1; i <= input; i++)    
{
    // 공백을 출력
    for (int j = 0; j < input - i; j++)
    {
        Console.Write(" ");
    }
    // 별을 출력
    for (int j = 0; j < i*2 -1; j++)
    {
        Console.Write("*");
    }
    // 각 줄마다 있는 줄넘김
    Console.WriteLine();
}


밑의 빨간 부분은 방금 한 부분을 반대로 뒤집어줘서 시작하면 된다.

// 입력받은 숫자 - 1 층부터 시작하여 1층까지 반복
for (int i = input - 1; i > 0; i--)
{
    for (int j = 0; j < input - i; j++)
    {
        Console.Write(" ");
    }
    for (int j = 0; j < i * 2 - 1; j++)
    {
        Console.Write("*");
    }
    Console.WriteLine();
}

전체 코드

class Program
{
    static void Main(string[] args)
    {
        int input = int.Parse(Console.ReadLine());

        for (int i = 1; i <= input; i++)
        {
            for (int j = 0; j < input - i; j++)
            {
                Console.Write(" ");
            }
            for (int j = 0; j < i * 2 - 1; j++)
            {
                Console.Write("*");
            }
            Console.WriteLine();
        }

        for (int i = input - 1; i > 0; i--)
        {
            for (int j = 0; j < input - i; j++)
            {
                Console.Write(" ");
            }
            for (int j = 0; j < i * 2 - 1; j++)
            {
                Console.Write("*");
            }
            Console.WriteLine();
        }
    }
}

댓글남기기