[프로그래머스] 불량 사용자 - JavaScript
프로그래머스 Level 3 - 불량 사용자
- 문제 분류 : 2019 카카오 블라인드 채용
- 문제 출처 : 프로그래머스 Level 3 - 불량 사용자
📌 생각한 풀이 방법
- validUsername 함수를 통해 조건에 만족하는 아이디인지 확인한다.
- DFS를 활용하여 모든 경우를 탐색한다.
- 가능한 경우의 수를 possibilites에 저장하고 중복되는 경우를 제거한다.
📌 풀이
function validUsername(username, hidden) {
// 조건에 만족하는 아이디인지 확인
if (username.length !== hidden.length) {
return false;
}
for (let i = 0; i < username.length; i++) {
let currentName = username[i];
let currentHidden = hidden[i];
if (currentHidden === "*") {
continue;
}
if (currentName !== currentHidden) {
return false;
}
}
return true;
}
function solution(user_id, banned_id) {
let possibilities = [];
let validArr = Array(user_id.length).fill(false);
function dfs(currentIndex, visited, possibleArr) {
if (currentIndex === banned_id.length) {
return possibilities.push(possibleArr); // 가능한 경우의 수를 possibilites에 저장
}
let currentId = banned_id[currentIndex];
user_id.forEach((id, index) => {
if (!visited[index] && validUsername(id, currentId)) {
visited[index] = true;
currentIndex++;
possibleArr.push(id);
dfs(currentIndex, visited, [...possibleArr]);
visited[index] = false;
currentIndex--;
possibleArr.pop();
}
});
return;
}
dfs(0, validArr, []); // DFS를 활용하여 모든 경우를 탐색
for (let i = 0; i < possibilities.length; i++) {
possibilities[i] = possibilities[i].sort().join("");
}
return new Set([...possibilities]).size; // 중복되는 경우를 제거
}
Author And Source
이 문제에 관하여([프로그래머스] 불량 사용자 - JavaScript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tnehd1998/프로그래머스-불량-사용자-JavaScript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)