코딩테스트

[프로그래머스/javascript] 파일명 정렬 (정규식 공부하고 다시풀기,sort 객체 사용법 공부)

_서리__ 2023. 3. 4. 16:41
function solution(files) {
    let numbers = {"0":true,"1":true,"2":true,"3":true,"4":true,"5":true,"6":true,"7":true,"8":true,"9":true}
    let obj = {};
    for(let i=0;i<files.length;i++){
        obj[files[i]]={};
        for(let j=0;j<files[i].length;j++){
        if(!obj[files[i]]["num"]&&!numbers[files[i][j]]){
            if(obj[files[i]]["str"]===undefined){
            obj[files[i]]["str"]=files[i][j]
            }else{
                obj[files[i]]["str"]+=files[i][j]
            }
        }
        else if(numbers[files[i][j]]&&!obj[files[i]]["etc"]){
            if(obj[files[i]]["num"]===undefined){
                obj[files[i]]["num"] = files[i][j]
            }else{
                obj[files[i]]["num"] += files[i][j]
            }
        }else if(obj[files[i]]["num"]&&!numbers[files[i][j]]){
            obj[files[i]]["etc"] = true;
        }
        }
    }
    let objArr = [];
    let answer = [];
    for(let key in obj){
        obj[key]["name"] = key
        obj[key]["str"] = obj[key]["str"].toLowerCase();
        obj[key]["num"] = Number(obj[key]["num"])
        objArr.push(obj[key])
    }
    objArr.sort((a,b)=>{
        return a.num<b.num?-1:a.num>b.num?1:0
    })
    objArr.sort((a,b)=>{
        return a.str < b.str ?-1:a.str>b.str?1:0
    })
    answer= objArr.map((el)=>{
        return el.name
    })

    /* 이름순으로 정렬 #오름차순 */
// student.sort(function(a, b) { 
//   return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;  // 광희, 명수, 재석, 형돈 
// });

    return answer;
}