File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed
Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments