문제 풀기/C#

38. 직사각형 별찍기

kagan-draca 2025. 1. 22. 13:52

 

풀이 1) 2중 반복문을 활용해서 "*"을 행과 열의 개수 만큼 출력 시킨다.

 

using System;

public class Example
{
    public static void Main()
    {
        String[] s;

        Console.Clear();
        s = Console.ReadLine().Split(' ');

        int a = Int32.Parse(s[0]);
        int b = Int32.Parse(s[1]);

        for( int i=0; i<b; i++ )
        {            
            for( int j=0; j<a; j++ )
            {
                Console.Write("*");
            }
            Console.WriteLine();
        }
    }
}

 

하지만 이럴 경우 행과 열의 개수가 늘어남에 따라 수행시간이 기하급수적으로 늘어나는 것을 볼 수 있다.

 

그렇다면 수행시간을 줄이기 위해서는 반복문을 최대한 적게 사용 된다.

 

풀이 2) new string('*', 열 개수)를 활용해 "*"을 출력하는 열에 해당하는 반복문을 제거해준다.

using System;

public class Example
{
    public static void Main()
    {
        String[] s;

        Console.Clear();
        s = Console.ReadLine().Split(' ');

        int a = Int32.Parse(s[0]);
        int b = Int32.Parse(s[1]);

        for(int i = 0; i < b; i++)
        {
            Console.WriteLine(new string('*',a));
        }
    }
}

 

그 결과 

 

풀이 2)가 풀이 1)과 비교 했을 때 편차가 적고 수행시간이 짧은 것을 확인할 수 있다.