Algorithm
[프로그래머스] 스킬트리(JS)
createElement
2022. 9. 16. 22:18
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이전에 푼 문제를 다시 풀었는데 더 간단한 방법으로 해결하여 이 글을 작성한다.
이번에 작성한 코드
이전 코드보다 가독성이 더 좋아졌고 더 간단하게 풀이해보았다.
function solution(skill, skill_trees) {
let cnt = 0;
for (let list of skill_trees) {
// skill에 포함된 스킬만 뽑기
let s = list.split("").filter((v) => skill.indexOf(v) > -1).join("");
// 항상 첫 번째 스킬부터 배운 후 두 번째 스킬을 배워야 하므로
// 필터링된 스킬 트리(s)는 skill의 맨 앞 부분부터 일치해야 한다.
// 예를 들어 skill은 'CBD'일 때 스킬 트리가 'BDA'의 경우,
// 필터링된 스킬 트리는 'BD'이며 skill에 포함된 스킬 트리이지만
// B 스킬을 배우기 전에 C 스킬부터 배워야 하므로 올바르지 않은 스킬 순서이다.
if (skill.indexOf(s) === 0) cnt++;
}
return cnt;
}
console.log(solution("CBD", ["BACDE", "CBADF", "AECB", "BDA"])); // 2
이전에 작성한 코드
function solution(skill, skill_trees) {
let answer = 0;
for(let i of skill_trees) {
let tmp = skill.split('');
let len = 0;
for(let j of i) {
if(tmp.includes(j)) {
if(j !== tmp.shift()) break;
else len++;
}
else len++;
}
if(len === i.length) answer++;
}
return answer;
}