[programmers/js] [3차] 파일명 정렬

승민·2024년 3월 6일

알고리즘

목록 보기
67/171

[3차] 파일명 정렬

https://school.programmers.co.kr/learn/courses/30/lessons/17686

문제 설명

  • 파일 명을 정렬 후 반환
  • head의 문자열을 대소문자 구분 x
  • 숫자는 10이 2보다 앞에오는 경우를 해결해서 반환
  • tail은 들어온 순서를 지켜서

풀이

  1. 정규 표현식으로 문자를 str, num으로 구분
  2. {전체 이름, str, num, idx}로 저장
  3. 정렬
function solution(files) {
    const reg = /^([a-zA-Z-\. ]+)([0-9]+)(.*)$/
    let arr = [];
    files.map((file, idx) => {
        const [all, str, num] = file.match(reg);
        arr.push({all, str: str.toLowerCase(), num: parseInt(num), idx})
    })
    return arr.sort((a,b) => {
        if (a.str > b.str) return 1
        if (a.str < b.str) return -1
        if (a.num > b.num) return 1
        if (a.num < b.num) return -1
        return a.idx -b.idx;
    }).map((v) => v.all)
}

0개의 댓글