728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/17686
문제 풀이 방법
- 정규식 사용이 활약하는 문제이다.
(\D+)는 숫자가 아닌 것 => 문제에서는 -와 같은 특수문자까지 포함해야 한다.
(\d+)는 숫자인 것 => 중간에 숫자로 구성된 부분
뒤에 파일 형식(TAIL)은 파일명으로만 정렬해야되므로 고려안해도 된다. - match메서드를 이용해 ['img12', 'img', '12', index: 0, input: 'img12.png', groups: undefined] 형식으로 구성한다.
- 이후 파일명에 속하는 img와 12 부분을 이용해 비교해준뒤 다시 input 값으로 배열을 만든 뒤 제출해준다.
코드
const solution = (files) => {
return files
.map(file => file.match(/(\D+)(\d+)/))
.sort((a, b) => {
if(a[1].toLowerCase() > b[1].toLowerCase()){
return 1;
}
else if(a[1].toLowerCase() < b[1].toLowerCase()){
return -1;
}
else {
return parseInt(a[2]) - parseInt(b[2]);
}
})
.map(e => e.input);
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 연습문제 / 숫자 변환하기 (0) | 2023.09.18 |
---|---|
[JS] 2Level / 연습문제 / 롤케이크 자르기 (0) | 2023.09.16 |
[JS] 2Level / 스택/큐 / 주식가격 (0) | 2023.09.14 |
[JS] 2Level / Summer/Winter Coding(~2018) / 방문 길이 (0) | 2023.09.12 |
[JS] 2Level / 연습문제 / 뒤에 있는 큰 수 찾기 (0) | 2023.09.11 |