티스토리 뷰

문제 설명

문자열 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함