본문 바로가기
자료구조&알고리즘/코딩테스트 문제연습

프로그래머스 Lv.1 문자열 내림차순으로 배치하기 (JavaScript)

by 복숭아 우유씨 2022. 9. 10.

자바스크립트로 프로그래머스 문제 풀기

문제

- 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12917

 문자열을 대소문자를 구분해서 내림차순으로 정렬하는 문제이다.

 

 

풀이

나의 풀이

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

 

 

Study more...

문제를 결국 풀긴했는데 처음에 sort((a,b) => (b - a)) 의 형식으로 풀었더니 정렬이 되지 않았다. 그래서 sort함수에 다시 살펴보았다. (출처: MDN)

Array.Prototype.sort() 메서드와 문자열 정렬

- 배열의 요소를 정렬하는 메소드이며, 기본 정렬 순서는 유니코드 코드 포인트를 따른다.

즉, 요소를 문자열로 변환하여 그 문자열의 유니코드 코드 포인트 값에 따라 정렬된다.

 

- 구문

    arr.sort([compareFunction])

여기서 compareFunction은 정렬 순서를 정의하는 함수이고, 생략시 요소를 문자열로 변환 후 그 유니코드 코드 포인트 순서에 따라 비교하게 된다.

compareFunction이 있으면, 해당 함수이 반환값에 따라 정렬되게 된다.

 

- 반환

정렬된 배열이 반환된다. 복사본이 만들어지지 않는다.

 
 
* 문제에서의 sort 메서드 사용에 대한 고찰
 - sort((a,b) => (b - a))는 숫자를 비교하기 위해서 사용되는 방식이다.
 - 유니코드 값으로 영어 대문자는 소문자보다 작기 때문에 오름차순으로 정렬 후 reverse메서드로 뒤집으면 된다.
 

 

댓글