본문 바로가기

Programmers

[프로그래머스] 불량 사용자 (JS) - DFS

문제

https://school.programmers.co.kr/learn/courses/30/lessons/64064

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드

내 풀이

function solution(user_id, banned_id) {
    const isVisited = Array.from({length:user_id.length}, ()=>false);
    
    const arr = [];
    let realArr = []
    
    dfs(0)
     
    function dfs(idx){
        if(idx===banned_id.length){
            realArr.push([...arr]);
            return;
        }
        for(let i=0; i<user_id.length; i++){
            if(!isVisited[i]&&check(user_id[i], banned_id[idx])){
                isVisited[i]=true;
                arr.push(user_id[i]);
                dfs(idx+1);
                arr.pop();
                isVisited[i]=false
            };
        }
    }
    
    function check(userId, bannedId){
        if(userId.length!==bannedId.length) return false;
        for(let i=0; i<userId.length; i++){
            if(bannedId[i]==='*') continue;
            if(userId[i]!==bannedId[i]) return false;
        }
        return true;
    }
    
    realArr = realArr.map(arr => arr.sort().join());

    const answer = new Set(realArr).size
    
    return answer;
}

 

정리

문자열 정렬

- 오름차순

arr.sort()

 

- 내림차순

arr.sort((a,b)=>{

    if(a<b) return 1;

    if(a>b) return -1;

    if(a===b) return 0;

})

 

숫자 정렬

- 오름차순

arr.sort((a,b)=>a-b) 

 

- 내림차순

arr.sort((a,b)=>b-a)

참조

https://hianna.tistory.com/409