티스토리 뷰
문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한사항
- s는 길이 1 이상인 문자열입니다.
입출력 예
- s가 "Zbcdefg"일 때 "gfedcbZ"를 return
풀이
function solution(s) {
let characters = s.split('');
let lowerCaseChars = [];
let upperCaseChars = [];
for(let i = 0; i < characters.length; i++) {
if(characters[i] === characters[i].toUpperCase()) {
upperCaseChars.push(characters[i]);
} else {
lowerCaseChars.push(characters[i]);
}
}
let sortedLowerCase = lowerCaseChars.sort((a, b) => b.localeCompare(a));
let sortedUpperCase = upperCaseChars.sort((a, b) => b.localeCompare(a));
return [...sortedLowerCase, ...sortedUpperCase].join('');
}
설명
-먼저 문자열 s를 split를 사용하여 알파벳 하나하나를 배열의 형태로 넣어서 characters 배열에 할당한다. 그리고 소문자와 대문자를 구별해서 넣을 빈 배열 lowerCaseChars와 upperCaseChars 라는 빈 배열 2개를 준비한다.
-그 후 반복문을 사용하여 characters 배열의 인덱스를 하나씩 돌면서 소문자인지 대문자인지를 판단하여 lowerCaseChars와 upperCaseChars 각 배열에 push 한다.
-그 후 sort와 문자열을 대상으로 내림차순, 오름차순을 할 수 있는 localeCompare을 사용하여 정렬한다.
-마지막으로 lowerCaseChars와 upperCaseChars에 있는 인덱스들을 하나의 배열에 합친 뒤, join을 통해 하나의 문자로 합쳐서 return 하면 된다.
참고
문자들을 정렬할 때도 sort를 사용해도 되는 경우가 있다. 하지만 문자열에는 sort가 안 통하는 경우도 있는데, 이 때는 localeCompare 함수를 쓰면 된다. 여기서는 b를 앞에 두고, 매개변수에 a를 뒀는데 만약 오름차순으로 할거면 a를 앞에 두고, 매개변수에 b를 두면 된다.
'프로그래머스 1단계' 카테고리의 다른 글
부족한 금액 계산하기 (0) | 2023.08.27 |
---|---|
약수의 개수와 덧셈(JS) (0) | 2023.08.16 |
음양 더하기(JS) (0) | 2023.08.16 |
자릿수 더하기(JS) (0) | 2023.08.07 |
x만큼 간격이 있는 n개의 숫자(JS) (0) | 2023.08.07 |