Skip to content

Commit f42f345

Browse files
committed
File sort / 심화
1 parent 52dfb61 commit f42f345

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

bona1122/[week9]Sort/File_sort.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// https://school.programmers.co.kr/learn/courses/30/lessons/17686
2+
3+
function solution(files) {
4+
const regex = /([^0-9]+)([0-9]+)(.*)/
5+
files = files.map((file, idx) => ({
6+
name: file,
7+
parts: file.match(regex),
8+
originalIndex: idx,
9+
}))
10+
11+
files = files.sort((a, b) => {
12+
{
13+
// HEAD 부분 비교 (대소문자 무시)
14+
const headA = a.parts[1].toLowerCase()
15+
const headB = b.parts[1].toLowerCase()
16+
17+
if (headA < headB) return -1
18+
if (headA > headB) return 1
19+
20+
// HEAD가 같으면 NUMBER 부분 비교 (숫자로 비교)
21+
const numberA = Number(a.parts[2])
22+
const numberB = Number(b.parts[2])
23+
24+
if (numberA < numberB) return -1
25+
if (numberA > numberB) return 1
26+
27+
// HEAD와 NUMBER가 모두 같으면 원래 순서 유지
28+
return a.originalIndex - b.originalIndex
29+
}
30+
})
31+
32+
return files.map((file) => file.name)
33+
}

0 commit comments

Comments
 (0)