문제
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한 사항
str은 길이 1 이상인 문자열입니다
나의 풀이
function solution(s) {
// 소문자만 배열 -> 사전순 정렬 -> 역순 정렬
let lowerArr = s.split("").filter(v => v == v.toLowerCase()).sort((a,b) => a.localeCompare(b)).reverse();
// 대문자만 배열 -> 사전순 정렬 -> 역순 정렬
let upperArr = s.split("").filter(v => v == v.toUpperCase()).sort((a,b) => a.localeCompare(b)).reverse();
return lowerArr.concat(upperArr).join("");
}
정확한 정렬을 위해 localeCompare
을 이용하려다보니 이렇게 복잡한 코드가 탄생했다...
정확도 테스트 결과
다른 풀이
- 가장 간결하고 좋은 풀이
function solution(s) { return s .split("") .sort() .reverse() .join(""); }
- 이외의 풀이
function solution(s) { return s.split('').sort((a, b) => a.charCodeAt() - b.charCodeAt()).join(''); }
체크
sort()
: 대문자 -> 소문자 순으로 정렬sort((a,b) ⇒ a.localeCompare(b))
: 소문자 -> 대문자 순으로 정렬sort((a, b) => a.charCodeAt() - b.charCodeAt()
: 대문자 -> 소문자 순으로 정렬
(유니코드에서 대문자 < 소문자)
'Coding test' 카테고리의 다른 글
[프로그래머스] 소수 찾기 (Level1) (0) | 2022.04.11 |
---|---|
[프로그래머스] 문자열 다루기 기본 (Level 1) (0) | 2022.04.06 |
[프로그래머스] 문자열 내 p와 y의 개수 (Level 1) (0) | 2022.04.05 |
[프로그래머스] 두 정수 사이의 합 (Level 1) (0) | 2022.04.02 |
[프로그래머스] 나누어 떨어지는 숫자 배열 (Level 1) (0) | 2022.04.02 |