반응형
문제
나의 풀이
function solution(files) {
var answer = [];
answer = files.sort((a,b)=>{
const first = a.toUpperCase().match(/\D+/gi)[0];
const second = b.toUpperCase().match(/\D+/gi)[0];
if(first !== second){
return (first > second) ? 1 : -1
}
return +a.match(/\d+/gi)[0] - (+b.match(/\d+/gi)[0])
})
return answer;
}
split, match를 정규 표현식으로 활용 가능하다는 부분이 중요했던 것 같다.
너무 복잡하게 생각하지 않고 sort 내 함수로 처리 했던게 좋았다.
sort 내에서 문자열 정렬은 a-b 가 아니라 직접 -1,1을 지정해주어야 된다. 위에서는 삼항연산자를 사용했다.
match는 배열로 반환해주는데 문제 조건에 필요한 요소가 마침 제일 처음 나오는 첫번째 요소여서 첫번째 요소만 사용했다.
속도 측면에서 좋은 풀이인지는 잘 모르겠다.
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] level2. [3차] 압축 (javascript) (0) | 2021.08.31 |
---|---|
[프로그래머스] level2. 구명보트 (javascript) (0) | 2021.08.26 |
[프로그래머스] level1. 숫자 문자열과 영단어 (javascript) (0) | 2021.07.13 |
[프로그래머스] level2. 점프와 순간 이동(javascript) (0) | 2021.07.05 |
[프로그래머스] level3. 베스트앨범 (javascript) (0) | 2021.06.23 |