프로그래머스 LEVEL 2(파일명 정렬)
-
사용 언어 : javascript
-
해결 날짜 : 2022-09-05
-
해결 방법 :
- files를 돌며 각 파일에 대한 HEAD, NUMBER, TAIL을 분리하여 splitArray에 push()
- splitArray를 1. HEAD 오름차순, 2. NUMBER 오름차순 순으로 정렬
- splitArray를 돌며 answer에 HEAD, NUMBER, TAIL push()
-
회고 : 처음에 number, tail index만 저장했는데 정렬할 때 참조하기 어려워서 HEAD, NUMBER, TAIL 각 string을 저장
-
코드
function solution(files) { const answer = []; const splitArray = []; for (const file of files) { const numberIndex = file.search(/[0-9]/); const head = file.substring(0, numberIndex); const afterHead = file.substring(numberIndex); const tailIndex = afterHead.search(/[^0-9]/); const number = tailIndex > -1 ? afterHead.substring(0, tailIndex) : afterHead; const tail = tailIndex > -1 ? afterHead.substring(tailIndex) : ''; splitArray.push({'HEAD': head, 'NUMBER': number, 'TAIL': tail}); } splitArray.sort((a, b) => { if (a.HEAD.toLowerCase() < b.HEAD.toLowerCase()) return -1; else if (a.HEAD.toLowerCase() > b.HEAD.toLowerCase()) return 1; else { if (Number(a.NUMBER) < Number(b.NUMBER)) return -1; else if (Number(a.NUMBER) > Number(b.NUMBER)) return 1; else return 0; }; }); for (const element of splitArray) { answer.push(element.HEAD + element.NUMBER + element.TAIL); } return answer; }
-
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges