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 |