[프로그래머스] 코딩테스트 연습 - 59

krkorklo·2022년 2월 16일
0

프로그래머스

목록 보기
59/78

level 2 - 파일명 정렬

파일명은 크게 숫자가 아닌 문자부분 HEAD, 숫자 부분 NUMBER, 나머지 부분 TAIL의 세 부분으로 구성된다. HEAD, NUMBER 순으로 정렬하고 이 두 부분이 같은 경우 원래 순서를 유지한다. 파일명 정렬 프로그램을 구현하라.

입출력 예시
files : ["img12.png", "img10.png", "img02.png", "img1.png", "IMG01.GIF", "img2.JPG"]
-> ["img1.png", "IMG01.GIF", "img02.png", "img2.JPG", "img10.png", "img12.png"]

function solution(files) {
    var file_arr = [];
    files.forEach((file) => {
        var head = file.split(/[\d]/)[0].toLowerCase();
        var num = Number(file.split(/[^\d]/).filter((n) => n)[0]);
        file_arr.push([head, num, file]);
    })
    file_arr = file_arr.sort((a, b) => {
        if (a[0] == b[0]) return a[1] - b[1];
        else return (a[0] > b[0]) - (a[0] < b[0]);
    })
    
    return file_arr.map((file) => file[2]);
}

sort로 숫자 정렬하는 것만 알았는데 문자열 정렬하는 방법은 제대로 몰랐다.
이번에 찾아보고 확실히 알았다.

0개의 댓글