개발 공부
(프로그래머스)(자바스크립트)파일명 정렬 본문
코딩테스트 연습-2018 KAKAO BLIND RECRUITMENT-[3차] 파일명 정렬
https://programmers.co.kr/learn/courses/30/lessons/17686
//약 130 소요
var logFlag = false;
function solution(files) {
//숫자5개인 경우 오류나는 것 아래 테스트로 확인함
//files = ["A-00011 Freedom Fight44er", "A-10 Superfort5ress", "A-10 Thunderbolt6II", "A-10 Tomcat"];
//if(files[0] == 'img12.png'){
logFlag = true;
//console.log(logFlag);
//}
var answer = [];
//비교를 위한 object array를 만듬
var items = [];
for(var i = 0 ; i < files.length; i++){
var obj = {};
//origin 설정
obj.origin = files[i];
//숫자 첫 출현위치
var numberFirstIndex = files[i].search(/\d/);
//head 설정
obj.head = files[i].substring(0, numberFirstIndex); //str.search(/\d/)
//head 이후 부분 임시 저장
var temp = files[i].substring(numberFirstIndex, numberFirstIndex+5); //str.substring()
//number 설정(임시) //5개 모두 숫자이면 -1임, 이를 처리해줘야함
obj.number = temp.substring(0, temp.search(/[ \.\-A-Za-z]/) == -1 ? 5 : temp.search(/[ \.\-A-Za-z]/)); //regex
//number 마지막 출현 위치
var numberLastIndex = numberFirstIndex + obj.number.length;
//number parseInt
obj.number = parseInt(obj.number, 10); //parseInt
//tail 설정
obj.tail = files[i].substring(numberLastIndex);
items.push(obj);
}
if(logFlag){
console.log(items);
}
// 정렬
items.sort(function(a, b) {
//head 비교
var headA = a.head.toUpperCase(); // ignore upper and lowercase
var headB = b.head.toUpperCase(); // ignore upper and lowercase
if (headA < headB) {
return -1;
}
if (headA > headB) {
return 1;
}
// head 같을 경우
if (headA == headB){
//number 비교
var numberA = a.number;
var numberB = b.number;
if (numberA < numberB) {
return -1;
}
if (numberA > numberB) {
return 1;
}
return 0;
}
});
items.forEach(obj=>{ //forEach
//if(logFlag){
//console.log(obj);
//}
answer.push(obj.origin);
});
return answer;
}
'알고리즘' 카테고리의 다른 글
(프로그래머스)(자바스크립트 )압축 (0) | 2021.07.16 |
---|---|
(프로그래머스)(자바스크립트) 괄호 회전하기 (0) | 2021.07.09 |
(프로그래머스)(자바스크립트) 베스트앨범 (0) | 2021.07.07 |
(프로그래머스)(자바) 위장 (0) | 2021.07.07 |
(프로그래머스)(자바) H-Index (0) | 2021.07.07 |
Comments