-
문제
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 해석
접근 방법
파일명을 head, number, tail로 나누어 head가 같은 파일 명을 number 오름차순으로 정렬합니다.
head, number, tail로 구분하기 위해 정규식을 사용합니다.
풀이 과정
정규식을 사용해 파일 이름을 fileName, head, number로 구분합니다.
이 때, 정규식의 형태는 다음과 같습니다.
const [fileName, head, number] = files[i].match(/^(\D+)([0-9]+)(.*)$/);위 정규식은 전체 파일명에서 fileName, head, number에 해당하는 문자열(숫자)를 할당합니다.
- /^ : 문자열을 처음부터 매칭 (fileName)
- (\D+) : 숫자가 아닌 부분 (head)
- ([0-9]+ : 연속된 숫자 부분 (number)
- (.*) : 나머지 모든 부분
이후 파일명을 head 오름차순, head가 동일할 시 number 오름차순으로 정렬합니다.
전체 코드
function solution(files) { const ans = []; for (let i = 0; i < files.length; i++>) { const [fileName, head, number] = files[i].match(/^(\D+)([0-9]+)(.*)$/); ans.push([fileName, head.toLowerCase(), +number]); } ans.sort((a, b) => { if (a[1] > b[1]) return 1; if (a[1] < b[1]) return -1; if (a[2] > b[2]) return 1; if (a[2] < b[2]) return -1; }); return ans.map((v) => v[0]); }회고
- 문자열 문제 중에서 정규식을 제대로 익히면 간단하게 풀 수 있는 문제들이 많다. 시간을 내서 꼭 공부하자.
'Algorithm > JavaScript' 카테고리의 다른 글
[PRO] 프로그래머스 Lv.2 가장 큰 수 (Javascript) (1) 2024.11.12 [PRO] 프로그래머스 Lv.2 2개 이하로 다른 비트 (Javascript) (1) 2024.11.11 [PRO] 프로그래머스 Lv.2 타겟 넘버 (Javascript) (3) 2024.11.10 [PRO] 프로그래머스 Lv.2 땅따먹기 (Javascript) (0) 2024.11.09 [PRO] 프로그래머스 Lv.2 숫자 변환하기 (Javascript) (1) 2024.11.07