Skip to content

Latest commit

 

History

History
54 lines (35 loc) · 1.82 KB

File metadata and controls

54 lines (35 loc) · 1.82 KB

문자열 내림차

프로그래머스

문제

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

제한 사항

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

첫 번째 제출 코드

const solution = (s) =>
  s
    .split("")
    .sort((a, b) => b.charCodeAt(0) - a.charCodeAt(0))
    .join("");

기본 전제

  • split()join()을 활용하여 메소드 체이닝으로 최종 결과물을 반환한다.

풀이 과정

  1. split("") 메소드로 문자열을 문자 단위로 나눠 배열에 넣는다.
  2. sort() 메소드로 UTF-16 코드의 역순으로 정렬한다.
    • 콜백 함수에서 매개변수로 받은 a, b를 코드로 변환한 후, b 코드에서 a 코드를 뺀 값을 반환한다.
    • b 코드가 클 경우 양수값이 나오므로 역순 정렬된다.
  3. join("") 메소드로 정렬된 배열을 다시 문자열로 합친다.

문제점

  • 자바스크립트 배열에 reverse() 메소드가 존재하는 것을 깜빡했다.
  • 굳이 sort()에서 코드 변환 과정을 거침으로 인해 실행속도가 느려졌다고 생각한다.

두 번째 제출 코드

const solution = (s) => s.split("").sort().reverse().join("");

풀이 과정

  1. 정렬 부분에서 sort() 메소드를 콜백 없이 사용한다.
  2. reverse() 메소드를 통해 오름차순 정렬을 내림차순으로 바꾼다.

잊지 말자

  • 의외로 Arrayreverse() 메소드가 있다는 걸 깜빡한다. 간혹 요긴하게 쓰일 수 있으니 기억하자.