Coding Test/Programmers

[Lv.1] 수박수박수박수박수박수? [프로그래머스_코딩테스트] [문자열] [10분]

whawoo 2025. 6. 30. 02:45
반응형

🔍 문제 요약

https://school.programmers.co.kr/learn/courses/30/lessons/12922

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

길이가 n이거 '수'와 '박'이라는 단어가 번갈아 가면서 나오는 문장을 반환하는 문제

🧠 나의 접근 방식과 시행착오

3분 정도 걸린 문제. stringBuilder를 쓰긴 했지만 더 간단한 방법이 있었던 거 같은 느낌이 들어서 피드백이 필요할 듯 하다. 필자가 푼 방법은 그저 인덱스가 홀수일 때와 짝수일 때를 구분해서 stringBuilder에 넣고 반환하는 거 뿐...

using System.Text;

/// <summary>
/// 수박수박수박수박수박수?
/// https://school.programmers.co.kr/learn/courses/30/lessons/12922
/// </summary>
public string solution(int n)
{
    StringBuilder stringBuilder = new StringBuilder();

    for (int i = 0; i < n; i++)
    {
        if (i % 2 == 0)
        {
            stringBuilder.Append('수');
        }
        else
        {
            stringBuilder.Append('박');
        }
    }

    return stringBuilder.ToString();
}

✅ 풀이 코드

3항 연산자를 써서 좀 더 간단하게 된 거라 큰 피드백은 아니다.

public string solution(int n)
{
    var sb = new StringBuilder();

    for (int i = 0; i < n; i++)
    {
        sb.Append(i % 2 == 0 ? '수' : '박');
    }

    return sb.ToString();
}

 

두번째 피드백으로 준 건 문자열 반복과 잘라내기를 쓴 방법인데, 처음 본 Enumerable.Repeat를 쓴 것이라 코드 첨부. 아래와 같이 반복되는 것을 저렇게 도출할 수 있는 듯 하다. 속도가 비슷하거나 조금 빠를 수 있다고 한다. (다만 가독성 측면에서 떨어짐)

public string solution(int n)
{
    return string.Concat(Enumerable.Repeat("수박", n / 2)) + (n % 2 == 1 ? "수" : "");
}

🔄 정리

신기한 방식인 Enumerable.Repeat라는 방법도 있다는 것을 기억해두는 정도면 될 듯 하다.

반응형