728x90
문제 설명
문제 풀이 방법
- 이 문제는 filter 메서드의 사용이 중요했던 문제였던것 같다.
- 첫번째로 참고한 코드는 filter메서드의 사용이 중요한 코드이다.
흐름을 보면 skill_trees에서 tree들을 걸러야 되므로 1차적으로 filter메서드를 사용,
그 다음에는 skill_trees들의 각 요소 별로 skill에 있는 맨 처음 글자가 먼저 오는 방식이기에
skill에 속한 글자들이 있는 문자를 includes를 이용해 첫번째 문자를 추출한 뒤
indexOf를 이용해 skill에서의 index값이 0인 요소를 모아 길이를 반환한다. - 두번째 코드는 정규식으로 풀 수 있는 코드이며
흐름을 보자면
전체 skill_trees를 map메서드를 이용해 순회해주고 각 요소별 replace메서드를 정규식과 함께 사용해
skill에 있지 않는 문자들을 없애주고 filter메서드를 이용해 skill의 순서대로 있는지 걸러낸 뒤
map으로 반환된 배열을 길이를 측정후 제출
코드 1
function solution(skill, skill_trees) {
const arr = skill.split('');
return skill_trees.filter((tree) => skill.indexOf(tree.split('').filter((e) => arr.includes(e)).join('')) === 0).length;
}
코드 2
function solution(skill, skill_trees) {
const reg = new RegExp(`[^${skill}]`, 'g');
return skill_trees.map(e => e.replace(reg, '')).filter(e => { return skill.indexOf(e) === 0 || e === '' }).length
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 월간 코드 챌린지 시즌3 / n^2 배열 자르기 (0) | 2023.06.11 |
---|---|
[JS] 힌트 2Level / 완전탐색 / 피로도 (0) | 2023.06.09 |
[JS] 힌트 2Level / 2020 KAKAO BLIND RECRUITMENT / [3차] 압축 (0) | 2023.06.07 |
[JS] 2Level / 2018 KAKAO BLIND RECRUITMENT / [1차] 뉴스 클러스터링 (0) | 2023.06.06 |
[JS] 2Level / 연습 문제 / N개의 최소공배수 (0) | 2023.06.02 |