Coding Test/Programmers

[Lv.1] 이상한 문자 만들기 [프로그래머스_코딩테스트] [문자열] [20분]

whawoo 2025. 6. 12. 23:44
반응형

🔍 문제 요약

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

 

프로그래머스

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

programmers.co.kr

s라는 문자열에 단어와 1개 이상의 공백으로 주어질 때 단어들의 홀수번째는 소문자로, 짝수번째는 대문자로 바꾸는 문제

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

9분 정도 걸린 문제. 빠르게 구현을 해보고 Array.ConvertAll로 혹시 가능할까도 해봤는데 단어마다의 처리가 달라져야 하므로 s의 각 char를 돌면서 stringBuilder를 써서 간편히 해결했다.

using System;
using System.Text;

public class Solution
{
    /// <summary>
    /// 이상한 문자 만들기
    /// https://school.programmers.co.kr/learn/courses/30/lessons/12930
    /// </summary>
    public string solution(string s)
    {
        // s에는 단어와 단어 사이에 하나 이상의 공백으로 이루어져 있음
        // 각 단어에 홀수번째는 소문자, 짝수번째는 대문자로 해서 변경시키기
        int wordIndex = 0;
        var stringBuilder = new StringBuilder();
        
        for (int i = 0; i < s.Length; i++)
        {
            char c = s[i];

            if (c == ' ')
            {
                stringBuilder.Append(' ');
                wordIndex = 0;
                continue;
            }
            
            wordIndex++;
            stringBuilder.Append(wordIndex % 2 == 0 ? char.ToLower(c) : char.ToUpper(c));
        }
        
        return stringBuilder.ToString();
    }
}

/// <summary>
/// C# 7.3
/// </summary>
internal class Program
{
    public static void Main(string[] args)
    {
        var sl = new Solution();
        var s = "try hello world";
        Console.WriteLine(sl.solution(s));
    }
}

✅ 풀이 코드

크게 피드백이 있지 않았던 문제로 이번 건 따로 적지 않았다.

🔄 정리

뭔가 좀 더 빠르거나 효율이 좋은 방법도 있을 것 같기도 한 문제?

반응형