자료구조, 코딩테스트/정렬(Sort)

[코딩테스트] Programmers - 문자열 정렬하기 2 (성공)

RꞮbble 2026. 5. 23. 16:58

 

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

 

프로그래머스

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

programmers.co.kr

 

 

풀이1

my_string 문자열을 소문자로 바꾸고, 알파벳 순서대로 정렬한 문자열을 반환해야 한다. 

대문자를 소문자로 바꾸려면 우선 대문자와 소문자가 숫자로 몇인지를 알아야 한다. 

잘 기억이 안나서 직접 출력해보니, a = 97, z = 122, A = 65, Z = 90이다. 

 

97과 65의 차이는 32이다. 

따라서 대문자를 소문자로 바꾸려면 대문자에 32를 빼주고 char형으로 형변환해주면 된다. 

 

 

코드1 - 정답

using System;
using System.Text;
using System.IO;

public class Solution {
    public string solution(string my_string) {
        string answer = "";
        
        StringBuilder sb = new StringBuilder();
        StreamReader sr = new StreamReader(Console.OpenStandardInput());
        StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
        
        string[] strArray = new string[my_string.Length];
        int index = 0; 
        for(int i = 0; i < my_string.Length; i++)
        {
            if(65 <= my_string[i] && my_string[i] <= 90)
            {
                strArray[index++] = $"{(char)(my_string[i] + 32)}";
            }
            else if(97 <= my_string[i] && my_string[i] <= 122)
            {
                strArray[index++] = $"{(char)(my_string[i])}";
            }
        }
        
        Array.Sort(strArray);
        foreach(string c in strArray)
        {
            sb.Append(c);
        }
        answer = sb.ToString();
        
        sr.Close();
        sw.Close();
        sb.Clear();
        
        return answer;
    }
}

 

 

다른 사람 코드1 

using System;
using System.Linq;

public class Solution {
    public string solution(string my_string) {
        string answer = string.Concat(my_string.ToLower().OrderBy(c => c));

        return answer;
    }
}

 

string.Concat 메서드는 IEnumerable<T> 타입을 문자열로 바꿔주는 메서드다. 

my_string.ToLower().OrderBy(c => c)를 하면 소문자 변환, 사전순 정렬이 된 IEnumerable<T> 타입이 반환되고 이걸 문자열로 바꿔주면 소문자이면서 알파벳 순서로 정렬된 문자열이 된다. 

 

 

다른 사람 코드2

using System;
using System.Linq;

public class Solution
{
    public string solution(string my_string)
    {
        return new string(my_string.ToLower().OrderBy(x => x).ToArray());
    }
}

 

소문자 변환, 사전순 정렬, 배열로 변환, 문자열로 변환하여 반환해줬다. 

new String으로 배열을 문자열로 바꿀 수도 있는 건 처음 알았다.