c# 백준 2444 별
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력과 출력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력은 다음과 같다.
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
풀이 과정
모양을 반으로 나눠서 각각 따로 그린다.
위의 빨간 부분부터 보면
각 줄은 입력받은 숫자 - 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();
}
}
}
댓글남기기