https://school.programmers.co.kr/learn/courses/30/lessons/49993
1. 문제에 대한 이해
- 우리가 풀어야 할 문제는 무엇인가?
선행 스킬 순서 skill과 유저들이 만든 스킬트리를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 구하라 - 주어진 자료는 무엇인가?
skill : 선행 스킬 순서
skill_trees : 유저들이 만든 스킬트리를 담은 배열 - 조건은 무엇인가?
스킬은 알파벳 대문자로 표기하며, 모든 문자열은 알파벳 대문자로만 이루어져 있습니다.
스킬 순서와 스킬트리는 문자열로 표기합니다.
예를 들어, C → B → D 라면 "CBD"로 표기합니다
선행 스킬 순서 skill의 길이는 1 이상 26 이하이며, 스킬은 중복해 주어지지 않습니다.
skill_trees는 길이 1 이상 20 이하인 배열입니다.
skill_trees의 원소는 스킬을 나타내는 문자열입니다.
skill_trees의 원소는 길이가 2 이상 26 이하인 문자열이며, 스킬이 중복해 주어지지 않습니다.
2. 계획
- 주어진 skill을 쪼갠다.
- skill_trees를 순회하면서 skill이 포함되어있다면 그걸 str에 넣는다.
- skill을 0부터 str의 길이만큼 자른다.
- 이것과 str을 비교하여 같다면 count + 1을 해준다.
- 이를 리턴한다.
3. 실행
const solution = (skill, skill_trees) => {
let skills = skill.split('');
let str = 0;
let count = 0;
for (let i = 0; i < skill_trees.length; i++) {
str = skill_trees[i].split('').filter((it) => skills.includes(it)).join('');
if (str === skill.slice(0, str.length)) {
count += 1;
}
}
return count
}
test('solution', () => {
expect(solution("CBD", ["BACDE", "CBADF", "AECB", "BDA"])).toEqual(2);
});
'코테연습' 카테고리의 다른 글
176. 가장 가까운 같은 글자 Javascript (0) | 2023.01.19 |
---|---|
176. 과일장수 Javascript (0) | 2023.01.18 |
174. 2xn 타일링 (1) | 2023.01.09 |
173. 연속 부분 수열 합의 개수 Javascript (0) | 2023.01.06 |
172. 할인행사 Javascript (0) | 2023.01.05 |
댓글