[js] 문자열 정렬하기(1) (lv.0, 정답률 89%)

sookyoung.k·2024년 5월 17일
0
post-thumbnail

문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 100
  • my_string에는 숫자가 한 개 이상 포함되어 있습니다.
  • my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다.

나의 풀이

function solution(my_string) {
    let num = '0123456789';
    return [...my_string]
        .filter((v) => {
            return num.includes(v);
        })
        .map((v) => {
            console.log(typeof v);
            return +v;
        })
        .sort((a, b) => a - b);
}
  • 숫자를 num 변수에 따로 저장한다
  • 스프레드 연산자로 my_string을 풀어서 filter() 함수로 num 변수에 포함되는 v요소만 걸러낸다
  • 그리고 map()을 통해 숫자로 변환한 후 sort()로 오름차순으로 정렬해서 리턴한다.

다른 풀이 1

function solution(my_string) {
    return my_string.match(/\d/g).sort((a, b) => a - b).map(n => Number(n));
}
  • 정규식 메서드를 활용해서 숫자를 걸러낸다!
    - match(/정규표현식/플래그) : "문자열"에서 "정규표현식"에 매칭되는 항목들을 배열로 변환
    • \d : 숫자
    • g : 전역 검색 (모든 검색 결과를 배열로 반환)
  • 그 결과를 sort()를 통해서 오름차순 정렬
  • 이후 map()을 통해 문자열을 숫자로 변환

다른 풀이 2

function solution(my_string) {
    return my_string.split("").filter((v) => !isNaN(v)).map((v) => v*1).sort((a,b) => a-b)
}
  • split()으로 배열로 쪼개준 후
  • filter()를 사용해서 숫자를 걸러주는데! isNaN()을 사용했다!
    - isNaN(): 어떤 값이 NaN인지 판별한다
  • 그 후 *1을 해서 숫자로 바꿔서 반환한 후 오름차순 정렬

다른 풀이 3

function solution(my_string) {
    return my_string.replace(/[^\d]/g,'').split('').map(v=>+v).sort();
}

이 풀이도 정규표현식을 잘 활용한 사례 같아서 가져와봤다.

  • [] : 괄호안의 문자들 중 하나로 or 처리 묶음
  • ^ : 특정 문자열로 시작(시작점)
  • [^문자] : 괄호 안의 문자를 제외한 것
    - ^는 대괄호 안에서 쓰면 제외의 뜻이고 대괄호 밖에서 쓰면 시작점 뜻
  • replace(): 정규표현식에 매칭되는 항목을 대체문자열로 변환

갓파데브의 JavaScript 정규 표현식 문법 총정리 + 응용 예제

profile
영차영차 😎

0개의 댓글