[JS] 프로그래머스 - 파일명 정렬

eunji·2022년 11월 17일
0

알고리즘

목록 보기
10/10

function solution(files) {
    
    files.sort((a,b)=>{
        
        let aHead=a.match(/^\D+/)[0].toLowerCase();
        let bHead=b.match(/^\D+/)[0].toLowerCase();
        
        if(aHead > bHead) return 1;
        if(aHead<bHead) return -1;
      
        
        return parseInt(a.match(/\d+/)[0])-parseInt(b.match(/\d+/)[0])
        

    })
  
    return files;
}

match 함수

정규식과 일치하면 배열로 리턴한다.

  • \D : 숫자가 아닌것들 (= [^0-9] )
  • '+' : 한번 이상 반복
  • \d : 숫자 ( = [0-9] )

aHead, bHead = 숫자가 아닌것들중에 숫자가 나타나기전 첫번째 문자(열)
parseInt(a.match(/\d+/)[0]) = 숫자가 아닌게 나타나기전 첫번째 숫자로만 이루어진 문자(열). parseInt를 해준 이유는 '010'처럼 앞에 0이 붙어있는 문자열때문이다.

짧은 회고

처음에는 search로 index를 찾아서 문자열을 자르고 자르고 해서 코드양이 방대해졌는데 match 함수 사용과 정규식 중 '+'를 써서 그렇게 안해도 된다는 사실을 배웠다 !

profile
프롱이

0개의 댓글