C#으로 풀기 - 수박수박수박수박수박수?

Amberjack·2024년 2월 26일
0

Codekata

목록 보기
12/16

문제 풀이

오늘의 문제 자체는 어렵지 않게 풀은 것 같다. 그렇다고 내가 푼 방법이 최선의 답이냐? 하면 그건 아니겠지만...

아무튼 나는 StringBuilder를 사용하여 문제를 풀었다.

using System.Text;

public class Solution
{
    public string solution(int n)
    {
        StringBuilder sb = new StringBuilder();
        bool flag = true;

        for (int i = 0; i < n; i++)
        {
            if (flag) sb.Append("수");
            else sb.Append("박");

            flag = !flag;
        }

        return sb.ToString();
    }
}

StringBuilder의 사용 이유

String은 수정이 되지 않는다고 한다. 우리가 String을 수정할 때는 수정하려는 String을 Copy하여 새로운 String을 만들게 된다고 한다. 그리고 이제 더 이상 사용하지 않는 String 변수들이 생기게 되는데, 이를 메모리 단편화라고 한다고 한다.

따라서 해당 문제를 해결하기 위해서는 StringBuilder를 사용하여 String에 대한 수정이 모두 끝난 후에 String으로 return해주는 방식으로 해결할 수 있다. 위의 문제에선 최악의 경우 10000번의 for문이 돌아갈 수 있기 때문에, 10000개의 새로운 String을 만들기 보다는 StringBuilder를 사용하는 것이 더 효율적이라고 할 수 있을 것이다. 아마도

0개의 댓글