오늘 푼 문제
1. 파일명 정렬/ Lv. 2 / 시간 : 29분
programmers.co.kr/learn/courses/30/lessons/17686?language=javascript
function solution(files) {
files.sort((a,b)=>{
let [a_head,a_num] = test(a);
let [b_head,b_num] = test(b);
if(a_head > b_head) return 1;
else if(a_head < b_head) return -1;
else return a_num-b_num;
})
return files;
}
function test(s){
let regx = /[0-9]/;
let config = false;
let head = '';
let num = '';
for(let i=0;i<s.length;i++){
if(regx.test(s[i])){
config = true;
num+=s[i]
}else{
if(config) break;
head+=s[i];
}
}
return [head.toLowerCase(), num*1];
}
추가사항
숫자가 뒤에 또 나오는 숫자에 대해 앞에서 연속된 숫자만 추출하는 법을 몰라 저렇게 문자열을 하나하나 돌면서 확인하는 식으로 작성했는데 다른 사람들의 풀이에 쓸만한 정규식이 있었음.
regx = /(\D*)([0-9]*)/i
저 정규식으로 match 를 쓸 경우 다음과 같은 배열을 뱉어준다.
저기서 1번째 인덱스 값을 head로, 2번째 인덱스 값을 number로 추출하면 됨.
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 2020카카오 인턴십 - 보석 쇼핑 (0) | 2021.02.02 |
---|---|
[프로그래머스] 2020카카오 인턴십 - 키패드 누르기/ 수식 최대화 (0) | 2021.02.01 |
[프로그래머스] 2018 카카오 공채 - n진수 게임 (0) | 2021.01.05 |
[프로그래머스] 고득점 키트 - DP1 (0) | 2020.12.21 |
[프로그래머스] 고득점 키트 - 그리디4 (0) | 2020.12.10 |