코딩 테스트

[프로그래머스 Level 1] 문자열 내림차순으로 배치하기

y_flm 2025. 4. 2. 17:47
반응형
문제:
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

 

문제 풀어보기: https://school.programmers.co.kr/learn/courses/30/lessons/12917

 

풀이보기
더보기
function solution(s) {
     let lowercase = [];
     let uppercase = [];
    
     for (let char of s) {
         char === char.toLowerCase() ? 
             lowercase.push(char) : uppercase.push(char);
     }

     lowercase.sort((a, b) => b.localeCompare(a));
     uppercase.sort((a, b) => b.localeCompare(a));

     return lowercase.join('') + uppercase.join('');
}

처음 풀이는 단순히 소문자와 대문자를 나누어서 각 배열에 push 했고, 

그 뒤에 각 배열을 정렬해서 붙이는 방식으로 구현했다.

근데 다른 사람풀이를 보며 애초에 sort가 알파벳을 정렬해주는 기능이 있는 줄 처음 알았다 ㅎㅎ;

 

function solution(s) {
     return s.split("").sort().reverse().join("");
}

이렇게 하면 한 줄로 간편하게 문제를 풀 수 있다.

먼저 split을 통해 문자열을 배열로 변환하고, sort를 통해 알파벳을 오름차순으로 정렬한다.

게다가 sort로 대문자도 알아서 정렬이 된다는 사실도 처음 알았다 ㅎ .. 

이렇게 정렬한 배열을 reverse로 뒤집어주면 내림차순이 될테고 마지막으로 join을 통해 다시 문자열로 변환해주면 끝!

 

반응형