FrontEnd/프로그래머스

[JS] 파일명 정렬

728x90

한번에 풀리긴 했는데 왜 되는거지..? 란 생각이 들었다.

 

 

먼저 푸는 간략한 순서는 아래와 같다.

 

1. 문자열을 head,num,tail,v(원래값) 으로 나누어서 다시 저장.

2. sort 함수를 활용해서 head > num 순으로 정렬을 해주었다.

 

 

이때 num을 정규표현식으로 구한 이후, split함수를 썼는데 num이 두번나오는 경우를 어떻게 해야할지 고민하던 중, split함수의 2번째 인자를 활용하면 split배열의 최대 크기를 정해줄 수 있다고 해서 이를 활용해보았다.

 

 

 

 

function solution(files) {
    const fileInfo = files.map(file => {
        const v = file
        file = file.toLowerCase()
        let num = file.match(/[0-9]+/)    
        if (num) num = num[0]
    
        const [head,tail] = file.split(num,2)
        
        return [head,+num,tail,v]
    })
    
    
    return fileInfo.sort((a,b) => {
        if (a[0]===b[0]) {
            if (a[1]<b[1]) return -1
            else return 1
        }
        else if (a[0]<b[0]) return -1
        else return 1
    }).map(v => v[3])
}
728x90

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] 방금 그곡  (0) 2023.07.14
[JS] 압축  (0) 2023.07.13
[JS] N진수 게임  (0) 2023.07.11
[JS] JaDenCase 만들기  (0) 2023.07.11
[JS] 의상  (0) 2023.07.11