일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 독서
- JavaScript
- 책알남
- 투자
- 알고리즘공부
- 재테크
- 화장품
- 채권
- 백준알고리즘
- algorithmtraining
- 알고리즘트레이닝
- 독후감
- 경제
- 책을알려주는남자
- 자바
- 주식
- 서평
- 알고리즘 공부
- C++
- 자바스크립트
- 돈
- 성분
- C
- 지혜를가진흑곰
- Java
- 프로그래머스 알고리즘 공부
- 다독
- algorithmTest
- 프로그래밍언어
- algorithmStudy
Archives
- Today
- Total
탁월함은 어떻게 나오는가?
[Algorithm] 스킬트리 ( Programmers / JavaScript ) 본문
[Snow-ball]프로그래밍(컴퓨터)/Algorithm Training
[Algorithm] 스킬트리 ( Programmers / JavaScript )
Snow-ball 2024. 9. 20. 21:25반응형
문제 설명
선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다.
예를 들어 선행 스킬 순서가 스파크 -> 라이트닝 볼트 > 썬더 일때, 썬더를 배우려면 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다.
위 순서에 없는 다른 스킬 (힐딩 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 -> 힐링 -> 라이트닝 볼트 -> 썬더 와 같은 스킬트리는 가능하지만, 썬더 -> 스파크 나 라이트닝 볼트 -> 스파크 -> 힐링 -> 썬더 와 같은 스킬트리는 불가능합니다.
선행 스킬 순서 skill과 유저들이 만든 스킬트리를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요.
코드 풀이
javascript 함수 버전:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function solution(skill, skill_trees) {
let count = 0;
skill_trees.forEach((skill_tree) => {
const newSkill = skill_tree
.split('')
.filter(c => skill.includes(c))
.join('');
if (skill.startsWith(newSkill)) count++
});
return count;
}
|
cs |
javascript 미함수 버전:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
function solution(skill, skill_trees) {
let count = 0;
const treeList = [...skill_trees];
const returnArr = [];
treeList.forEach((tree) => {
const treeArr = tree.split("");
const arr = [];
treeArr.forEach((char) => {
let str = "";
for (let j = 0; j < skill.length; j++) {
if (char === skill[j]) {
str += char;
}
}
arr.push(str);
});
let str2 = "";
arr.forEach((char) => (str2 += char));
returnArr.push(str2);
});
for (let i = 0; i < returnArr.length; i++) {
let valid = true;
const newSkill = returnArr[i];
for (let j = 0; j < newSkill.length; j++) {
const a = newSkill[j];
const b = skill[j];
if (a !== b) {
valid = false;
break;
}
}
if (valid) count++;
}
return count;
}
|
cs |
https://school.programmers.co.kr/learn/courses/30/lessons/49993?language=javascript#fnref1
반응형
'[Snow-ball]프로그래밍(컴퓨터) > Algorithm Training' 카테고리의 다른 글
[Algorithm] 택배 배달과 수거하기 (Programmers / JavaScript) (0) | 2024.11.28 |
---|---|
[Algorithm] 쿼드압축 후 개수 세기 ( Programmers / javascript ) (0) | 2024.10.08 |
[Algorithm] 이진 변환 반복하기 ( Programmers / Python && JavaScript ) (1) | 2024.09.05 |
[Algorithm] 2개 이하로 다른 비트 ( Programmers / Python && JavaScript ) (0) | 2024.09.01 |
[Algorithm] 괄호 회전하기 ( Programmers / Python & JavaScript ) (0) | 2024.08.28 |
Comments