프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
😉문제 풀이 설명
아래는 브루트 포스, 완전 탐색을 이용한 문제풀이 입니다.
user_id 배열의 길이가 8 이하임을 캐치하고 완전 탐색으로 풀었습니다.
재귀를 이용하여 풀었고, 같은 문자열임을 확인하는 데는 정규 표현식을 사용하였습니다.
- pick_arr는 현재 선택한 user_id를 뜻합니다. pick_arr[i] 값이 0이면 user_id[i] 선택되지 않았고, 1이라면 선택되었음을 뜻합니다.
- answer_arr에는 경우의 수를 담습니다. banned_index를 완전히 순회한다면 pick_arr를 join한 형태로 answer_arr에 담습니다. ex)01100 > index값이 1과 2인 user_id의 값을 선택하였다.
😎문제 풀이 코드
function solution(user_id, banned_id) {
const pick_arr = Array(user_id.length).fill(0)
const answer_arr = []
function next(banned_index){
if(banned_index >= banned_id.length){
answer_arr.push(pick_arr.join(""))
return
}
const banned_name = banned_id[banned_index]
const reg_str = banned_name.split("").map(v=> v==="*" ? "\\w" : v).join("")
const reg = new RegExp(`^${reg_str}$`)
user_id.forEach((user_name,user_index)=>{
if(reg.test(user_name)){
if(!pick_arr[user_index]){
pick_arr[user_index] = 1;
next(banned_index+1)
pick_arr[user_index] = 0;
}
}
})
}
next(0)
return [...new Set(answer_arr)].length;
}
반응형
'개발관련 > 프로그래머스' 카테고리의 다른 글
[프래그래머스 알고리즘] 징검다리 건너기 JavaScript JS (0) | 2023.09.02 |
---|---|
[프래그래머스 알고리즘] 보석쇼핑 JavaScript JS (0) | 2023.09.02 |
[프로그래머스 알고리즘] 스티커모으기(2) JavaScript JS (0) | 2023.08.30 |