본문 바로가기
Developer/Algorithm

Programmers 프로그래머스 코딩테스트 연습 - 문자열 내림차순으로 배치하기 (JavaScript)

by roqkfrlfhr 2020. 8. 15.

Programmers 프로그래머스 코딩테스트 연습 - 문자열 내림차순으로 배치하기 (JavaScript)

 

Programmers(프로그래머스)의 코딩테스트 연습문제 Level 1 중,

문자열 내림차순으로 배치하기 문제를 JavaScript로 해결 해보도록 하겠습니다.

 

 

문제 설명

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

 

제한 사항

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

 

입출력 예

s return
"Zbcdefg" "gfedcbZ"

 

 

작성한 답

solution.js

function solution(s) {
    return s.split("").sort((a, b) => b.charCodeAt() - a.charCodeAt()).join("");
}

 

설명

영문 대문자와 소문자로 구성되어있는 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 반환하는 문제입니다.

방법은 정말 간단합니다.

먼저 영문 대문자와 소문자로 구성되어있는 문자열 s를 s.split("") 으로 한 문자씩 나눠 배열로 나눠줍니다.

그리고 나눠진 문자들을 요소로 가진 배열을 sort()로 정렬하는데,

그냥 sort()로 정렬하면 문자가 올림차순으로 정렬되지만,

내림차순으로 정렬하는 문제이기 때문에 정렬하는 요소를 charCodeAt()을 사용해 unicode값을 구하고 비교해,

내림차순으로 정렬하기위해 뒤의요소 유니코드 - 앞의요소 유니코드로 정렬하여 문자를 담은 배열이 내림차순으로 정렬되도록 해줍니다.

그리고 내림차순으로 정렬된 배열을 join("")을 사용하여 다시 하나의 문자열로 합쳐주고 반환 해주시면 됩니다.

너무도 장황한 설명 죄송합니다.

 

아무래도 장황한 설명보다는 위 한줄의 코드를 하줄씩 나눠서 나타나는 결과로 한번 더 설명 드리도록 하겠습니다.

예시는 문제의 입출력 예에서 주는 예시인 s = "Zbcdefg" 로 보여 드리도록 하겠습니다.

function solution(s) {
    console.log(s);     // s = "Zbcdefg"
    
    s = s.split("");    
    console.log(s);     // s = [Z, b, c, d, e, f, g]
    
    s = s.sort((a, b) => b.charCodeAt() - a.charCodeAt());
    console.log(s);     // s = [g, f, e, d, c, b, Z] 
    
    s = s.join("");
    console.log(s);     // s = "gfedcbZ"
    
    return s;
}

 

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!

 

감사합니다.


댓글