본문 바로가기

알고리즘/프로그래머스 문제풀이

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

문제 설명

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

제한 사항

  • str은 길이 1 이상인 문자열입니다.

입출력 예

s return
"Zbcdefg" "gfedcbZ"

풀이 과정

내가 작성한 코드

localeCompare 이용해서 정렬했더니 Zgfedcb가 결과로 나옴

그래서 대문자 / 소문자 나눠서 정렬한 후에

소문자 정렬한거랑 대문자 정렬한 것을 합쳐줌

function solution(s) {
    const s_arr = s.split("");
    const s_arr_uppercase = s_arr.filter(s => s === s.toUpperCase());
    const s_arr_lowercase = s_arr.filter(s => s === s.toLowerCase());
    let answer = "";

    s_arr_uppercase.sort((x, y) => {
        return y.localeCompare(x);
    });
    s_arr_lowercase.sort((x, y) => {
        return y.localeCompare(x);
    });
    answer = s_arr_lowercase.join("") + s_arr_uppercase.join("");

    return answer;
}
다른 사람 코드
sort, reverse 하면 대문자 따로 처리 안해줘도 알맞은 결과 값 나옴
function solution(s) {
    const answer = s.split("").sort().reverse().join("");
    return answer;
}

혼자 너무 복잡하게 생각하고 빙빙 돌아가는 느낌..^^ㅠ