본문 바로가기
프로그래머스 코딩테스트 문제/Level 1

[프로그래머스] - 직사각형 별찍기(C#)

by jyppro 2023. 8. 11.

직사각형 별찍기

오늘은 "직사각형 별찍기" 문제를 풀어보도록 하겠습니다. 바로 문제를 살펴보겠습니다.

 

문제 설명

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

 

제한 조건

  • n과 m은 각각 1000 이하인 자연수입니다.

 

예시

입력

5 3

출력

*****
*****
*****

 

시작 코드

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]);

        Console.WriteLine("{0}", a + b);
    }
}

 

나의 풀이

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.Write("\n");
        }
    }
}

 

코드 분석

string 타입의 배열 s가 주어지고, 콘솔을 초기화 시키는 Console.Clear()가 처음에 세팅되어 있습니다. 기본적으로 콘솔에 출력되는 형태를 갖추도록 공백으로 분리시켜주는 코드도 함께 있습니다. int형 a, b가 각각 s배열에 0번째 인덱스와 1번째 인덱스를 가져와 int32.Parse()를 사용합니다. 이후 이중for문을 작성하여 각각 b와 a만큼 돌려줍니다. 그 안에 a까지 돌리는 for문에서는 Console.Write()를 통해 별을 찍어줍니다. 이후 a까지의 for문이 종료되면 \n을 찍어줍니다.

 

풀이 설명

해당 문제에는 return하는 값이 없습니다. 문제에서 요구하는 것이 Console 창에 출력하는 것이기 때문입니다. 문제에서는 n과 m으로 입력값을 표현하였지만, 풀이에서는 a와 b를 사용합니다. 이점 유의하시길 바랍니다. 먼저 시작코드에서 주어진 내용들을 살펴보면, 입력값이 공백으로 구분되어 주어지고 해당 값을 공백을 기준으로 쪼개어 각각 a, b에 할당해주는 것입니다. 해당 코드에서 저는 이중for문을 추가하여 계산만 해준 것 뿐입니다. 5와 3이 입력으로 들어왔다면 3까지 돌리는 for문 안에 5까지 돌리는 for문이 존재하고, 5까지의 for문에서 별을 찍습니다. for문이 종료되면 줄바꿈을 해줍니다. 이 과정을 3번 반복하여 5 X 3의 크기를 가지는 직사각형을 만들 수 있습니다.

 

<NEXT>

오늘은 "직사각형 별찍기" 문제를 풀어보았습니다. 다음에는 "최대공약수와 최소공배수" 문제를 다뤄보도록 하겠습니다. 감사합니다.