Coding Test/Programmers
[Lv.1] 문자열 내 마음대로 정렬하기 [프로그래머스_코딩테스트] [문자열] [25분]
whawoo
2025. 6. 13. 08:47
반응형
🔍 문제 요약
https://school.programmers.co.kr/learn/courses/30/lessons/12915
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
strings라는 문자열 배열이 주어지고 n번째 인덱스의 char값을 기준으로 오름차순 정렬을 한 결과를 반환. (동일한 경우 문자열끼리 비교)
🧠 나의 접근 방식과 시행착오
20분 정도 걸린 문제. 처음에는 좀 더 복잡한 방식을 생각했었다가 Array.Sort로 바로 문젤르 해결할 수 있을 것으로 보여서 진행. 결국 n번째 캐릭터가 같은 경우와 다른 경우로 나누어서 구분하면 된다.
using System;
using System.Collections.Generic;
using System.Text;
public class Solution
{
/// <summary>
/// 문자열 내 마음대로 정렬하기
/// https://school.programmers.co.kr/learn/courses/30/lessons/12915
/// </summary>
public string[] solution(string[] strings, int n)
{
// 동일한 경우 사전순으로 앞선 것을 앞으로 두기 위함
Array.Sort(strings, (a, b) => a[n] == b[n] ? String.Compare(a, b, StringComparison.Ordinal) : a[n].CompareTo(b[n]));
return strings;
}
}
/// <summary>
/// C# 7.3
/// </summary>
internal class Program
{
public static void Main(string[] args)
{
var sl = new Solution();
var strings1 = new[] { "sun", "bed", "car" };
int n1 = 1;
var res1 = sl.solution(strings1, n1);
var strings2 = new[] { "abce", "abcd", "cdx" };
int n2 = 2;
var res2 = sl.solution(strings2, n2);
foreach (var res in res1)
{
Console.Write(res + ", ");
}
Console.WriteLine();
foreach (var res in res2)
{
Console.Write(res + ", ");
}
}
}
✅ 풀이 코드
조금 더 Array.Sort의 내부를 가독성 좋게 피드백을 한 버젼.
Array.Sort(strings, (a, b) =>
{
int charCompare = a[n].CompareTo(b[n]);
return charCompare != 0 ? charCompare : string.Compare(a, b, StringComparison.Ordinal);
});
🔄 정리
Array.Sort 사용에 대해서는 숙지해두면 유용.
반응형