Coding Test/Programmers

[Lv.0] 대문자와 소문자 [프로그래머스_코딩테스트] [문자열] [10분]

whawoo 2025. 6. 23. 03:32
반응형

🔍 문제 요약

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

 

프로그래머스

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

programmers.co.kr

알파벳 대문자와 소문자로 이루어진 문자열 my_string을 대문자 소문자를 반전시킨 결과를 반환하는 문제

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

5분정도 걸린 문제. 이전이었다면 아마 for문을 돌려서 일일이 체크를 했을거긴 한데 좀 더 간결한 방법을 문제를 풀면서 알게되어 적용한 형태. 처음에 Array.ConvertAll의 반환형이 있는 건줄 모르고 charArray를 넣으면 내부가 바뀌나 했었어서, 바뀌지 않는 결과를 보고 당황했었으나 결과로 반환되어서 나오는 것을 내부 코드를 보고 확인 후 답을 낼 수 있었다. (그렇다 보니 5분 정도 걸림..)

using System;
using System.Collections.Generic;

public class Solution
{
    /// <summary>
    /// 대문자와 소문자
    /// https://school.programmers.co.kr/learn/courses/30/lessons/120893
    /// </summary>
    public string solution(string my_string)
    {
        var charArray = my_string.ToCharArray();
        var resArray = Array.ConvertAll(charArray, input => char.IsLower(input) ? char.ToUpper(input) : char.ToLower(input));
        
        return new string(resArray);
    }
}

/// <summary>
/// C# 7.3
/// </summary>
internal class Program
{
    public static void Main(string[] args)
    {
        var sl = new Solution();

        var test = "cccCCC";
        var res = sl.solution(test);
    }
}

✅ 풀이 코드

피드백으로 다른 방법 중 하나로 Linq를 활용한 방법을 알려줘서 공유. (성능면에서 기존이 더 낫다고 한다)

public string solution(string my_string)
{
    return string.Concat(my_string.Select(c => char.IsLower(c) ? char.ToUpper(c) : char.ToLower(c)));
}

🔄 정리

Array.ConvertAll이란 것을 잘 쓰면 정말 유용하게 쓸 수 있는 듯 하다.

반응형