자바스크립트로 프로그래머스 문제 풀기
문제
- 출처: 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메서드로 뒤집으면 된다.
'자료구조&알고리즘 > 코딩테스트 문제연습' 카테고리의 다른 글
프로그래머스 Lv.1 최대공약수와 최소공배수 (JavaScript) (0) | 2022.09.17 |
---|---|
프로그래머스 Lv.1 로또의 최고 순위와 최저 순위 (JavaScript) (2) | 2022.09.10 |
프로그래머스 Lv.1 약수의 합 (JavaScript) (0) | 2022.09.10 |
프로그래머스 Lv1. 2016년 (JavaScript) (0) | 2022.09.03 |
프로그래머스 Lv.1 같은 숫자는 싫어 (JavaScript) (0) | 2022.08.27 |
댓글