[프로그래머스] 문자열 내림차순으로 배치하기_JavaScript

ne_ol·2022년 1월 19일
0
post-thumbnail

문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

제한 조건

  • str은 길이 1 이상인 문자열입니다.

입출력 예

sreturn
"Zbcdefg""gfedcbZ"

기본 solution 코드

function solution(s) {
    var answer = '';
    return answer;
}

문제 풀이

function solution(s) {
    let answer = '';
    let lowercase = (s.replace(/[A-Z]/g, '').split('')).sort().reverse().join('');
    let uppercase = (s.replace(/[a-z]/g, '').split('')).sort().reverse().join('');
    return answer = lowercase + uppercase;
}

풀이 설명

대/소문자들을 ''로 replace하고 배열로 바꾸고 sort로 오름차순 후 다시 reverse하고 join으로 배열의 모든 문자를 합쳤다. 알파벳은 내림차순 할 때 sort((a,b) => b-a) 가 적용되지 않았다. 여기를 참고하면 실제로 obj.sort().reverse()가 효율성 측면에서 같은 기능을 구현하는 하위 두가지 메소드 보다 좋다.

obj.sort((a, b) => (a > b ? -1 : 1)

obj.sort((a, b) => b.localeCompare(a) )

사용 함수

중복


다른 풀이

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

다른 풀이 설명

  1. 사용된 함수
    중복

  2. 풀이

  • 예시는 정렬이 이미 되어있어서 다른 예시로. s = "DajBziAlC"
  • s.split('') -> ['D', 'a', 'j', 'B', 'z', 'i', 'A', 'l', 'C']
  • s.split('').sort() -> ['A', 'B', 'C', 'D', 'a', 'i', 'j', 'l', 'z']
  • s.split('').sort().reverse() -> ['z', 'l', 'j', 'i', 'a', 'D', 'C', 'B', 'A']
  • s.split('').sort().reverse().join('') -> zljiaDCBA
  • 알파벳은 sort()를 할 경우, 자동으로 대문자가 먼저 A부터 Z로 정렬되고, 소문자가 a->z 로 정렬된다는 것을 잘 이용했다.
  1. 재밌네
profile
개발되는 중입니다.

0개의 댓글