이전에 푼 문제를 다시 풀었는데 더 간단한 방법으로 해결하여 이 글을 작성한다.
이번에 작성한 코드
이전 코드보다 가독성이 더 좋아졌고 더 간단하게 풀이해보았다.
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;
}
'Algorithm' 카테고리의 다른 글
[백준] 2623 음악프로그램(JS) (0) | 2022.10.12 |
---|---|
[백준] 18428 감시 피하기(JS) (0) | 2022.09.01 |
[백준] 13699 점화식(JS) (0) | 2022.08.19 |
[백준] 11652 카드(JS) (0) | 2022.08.10 |