프로그래머스 - 3차 파일명 정렬

front_pica·2021년 5월 19일
0

문제


풀이과정

  1. 정규표현식을 통해서 /(\d+)/g;를 써서 숫자를 기준으로 잘라낸다.
  2. 잘라낸것을 tail을 구분하기 위한 index와 잘린 배열들을 가진 객체로 answer배열에 push한다.
  3. 이 추출된 배열을 sort를 통해 첫번째 head는 주어진 단어를 소문자로 바꾸어 비교하고, 두번째 숫자는 parseInt로 숫자로 변환하여 비교하고, 마지막으로 tail은 아까 넣어준 index번호를 통해 비교를 해서 정렬시킨다.
  4. 정렬된것을 배열만 추출하여 join해서 return

코드

function solution(files) {
  const answer = [];
  const reg = /(\d+)/g; 
  for (let i = 0; i < files.length; i++) {
    answer.push({ index: i, value: files[i].split(reg) }); 
  }

  answer.sort((a,b) => {
    if((a.value[0].toLowerCase() < b.value[0].toLowerCase())) {
      return -1;
    } else if ((a.value[0].toLowerCase() > b.value[0].toLowerCase())) {
      return 1;
    } else {
      if(parseInt(a.value[1]) < parseInt(b.value[1])) {
        return -1
      } else if(parseInt(a.value[1]) > parseInt(b.value[1])) {
        return 1;
      } else {
       if(a.index < b.index) return -1;
       else return 1;
      }
    }
   
  })

  return answer.map(item => item.value.join(""))
}
profile
한걸음씩

0개의 댓글