[백준/C#] 2439번 별찍기-5

dev.hyeon·2022년 7월 2일
0

알고리즘

목록 보기
10/44
post-thumbnail

2439번 별찍기-2

풀이

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

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 별은 가운데를 기준으로 대칭이어야 한다.


코드

Console.Write()를 많이 사용할수록 런타임 시간이 많이 걸리고, string 덧셈 연산이 많을수록 메모리가 많이 사용된다. 코드는 런타임 시간이 빠른 순서대로 소개한다.

1. StringBuilder

using System;
using System.Text;
namespace BJ_2442{
    class Program{
        static void Main(string[] arg){
            int n = int.Parse(Console.ReadLine());

            for (int i = 1; i <= n; i++){
                StringBuilder sb_star = new StringBuilder();

                for (int j = 0; j < n - i; j++)
                    sb_star.Append(' ');

                for (int k = 0; k < i * 2 - 1; k++)
                    sb_star.Append('*');
                Console.WriteLine(sb_star);
            }
        }
    }
}

2. 단일 반복문

using System;
using System.Text;

namespace BJ_2442{
    class Program{
        static void Main(string[] arg){
            int n = int.Parse(Console.ReadLine());

            for (int i = 1; i <= n; i++)
                Console.WriteLine(new string(' ', n - i) + new string('*', i * 2 - 1));
        }
    }
}

3. string

using System;
namespace BJ_2442{
    class Program{
        static void Main(string[] arg){
            int n = int.Parse(Console.ReadLine());

            for (int i = 1; i <= n; i++){
                string star = "";
                for (int j = 0; j < n - i; j++)
                    star += ' ';

                for (int k = 0; k < i * 2 - 1; k++)
                    star += '*';
                Console.WriteLine(star);
            }
        }
    }
}

4. Console.write()로 바로 출력하기

using System;
namespace BJ_2442{
    class Program{
        static void Main(string[] arg){
            int n = int.Parse(Console.ReadLine());

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

0개의 댓글