알고리즘 - 5주차_모음사전

HoJeong Im·2021년 9월 24일
0

Break_Algo

목록 보기
20/46

문제

  • 링크

  • 중복 순열을 이용해서 계산함

코드

function solution(word) {
    var answer = 0;
    
    
    function perm(arr, num){
        let result = [];
        if(num === 1){
            return arr.map((v)=> [v])
        }
        
        arr.forEach((v,idx,arr)=>{
            const fixer = v;
            const restArr = arr;
            const permArr = perm(restArr, num-1)
            const combine = permArr.map((v)=>[
                fixer, ...v
            ])
            result.push(...combine);
        })
        return result;
    }
    
    let set = new Set();
    for(let i = 1 ; i <= 5 ; i++ ){
        let data = perm(['A','E','I','O','U'], i).map(e=> e.join(""));
        data.forEach(e=>{
            set.add(e);
        });
    }
    let val = [...set].sort((a,b)=>{
        if(a<b){
            return -1;
        }
        else if(a>b){
            return 1;
        }
        else {
            return 0;
        }
    })
   // console.log(val.indexOf(word)+1);
    
    
    return val.indexOf(word)+1;
}

회고

  • 시간이 많이 걸리는 문제 풀이라고 생각을 하지만, 제한적인 시간 내에서 가장 빠르게 생각할 수 있는 방법이 아닐까 생각을 합니다.
profile
꾸준함이 제일 빠른 길이었다

0개의 댓글