programmers.co.kr/learn/courses/30/lessons/17686
[ 아이디어 ]
정규식을 이용해 파일명의 숫자만 뽑고, 뽑은 숫자를 이용해 해당 숫자의 index를 찾는다.
숫자의 index의 전까지가 파일의 header 임으로 비교한다. 이때 소문자로 바꿔서 비교한다.
header가 같을 경우 숫자를 가져와서 비교한다. 이때 Number 타입 비교를 위해 Number()로 감싼 후 비교
*주의
정규식으로 숫자를 뽑았지만 이는 들어온 문자열 전체 중에 숫자이기에 tail에 있는 것도 포함될수 있다. 따라서 split('.')으로 tail 부분에 있을 숫자는 제거하고 뽑는다.(관련 테스트 케이스 3,4,5,19,20)
[ 코드 ]
function solution(files) {
files.sort((a, b) => {
let aNum = a.split(".")[0].replace(/[^0-9]/g, "");
let aNumIndex = a.indexOf(aNum);
let bNum = b.split(".")[0].replace(/[^0-9]/g, "");
let bNumIndex = b.indexOf(bNum);
if (a.slice(0, aNumIndex).toLowerCase() > b.slice(0, bNumIndex).toLowerCase()) {
return 1;
} else if (a.slice(0, aNumIndex).toLowerCase() < b.slice(0, bNumIndex).toLowerCase()) {
return -1;
} else {
if (Number(aNum) >= Number(bNum)) {
return 1;
} else {
return -1;
}
}
});
return files;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 위클리 챌린지 > 1주차 - 자바스크립트 (0) | 2021.08.17 |
---|---|
[프로그래머스] 연습문제 > 숫자의 표현 - 자바스크립트 (0) | 2021.06.14 |
[프로그래머스] 2021Kakao > 합승 택시 요금 - 자바스크립트 (0) | 2021.05.07 |
[프로그래머스] 탐욕법 > 단속카메라 - 자바스크립트 (0) | 2021.04.26 |
[프로그래머스] 2020 KAKAO 인턴십 > 수식 최대화 - 자바스크립트 (0) | 2021.04.07 |
댓글