Skip to content

Commit 07fec27

Browse files
committed
[level 2] Title: 스킬트리, Time: 0.28 ms, Memory: 33.6 MB -BaekjoonHub
1 parent 27315ae commit 07fec27

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# [level 2] 스킬트리 - 49993
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/49993)
4+
5+
### 성능 요약
6+
7+
메모리: 33.6 MB, 시간: 0.28 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > Summer/Winter Coding(~2018)
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2025년 09월 09일 22:04:41
20+
21+
### 문제 설명
22+
23+
<p>선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다.</p>
24+
25+
<p>예를 들어 선행 스킬 순서가 <code>스파크 → 라이트닝 볼트 → 썬더</code>일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다.</p>
26+
27+
<p>위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 <code>스파크 → 힐링 → 라이트닝 볼트 → 썬더</code>와 같은 스킬트리는 가능하지만, <code>썬더 → 스파크</code>나 <code>라이트닝 볼트 → 스파크 → 힐링 → 썬더</code>와 같은 스킬트리는 불가능합니다.</p>
28+
29+
<p>선행 스킬 순서 skill과 유저들이 만든 스킬트리<sup id="fnref1"><a href="#fn1">1</a></sup>를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요.</p>
30+
31+
<h5>제한 조건</h5>
32+
33+
<ul>
34+
<li>스킬은 알파벳 대문자로 표기하며, 모든 문자열은 알파벳 대문자로만 이루어져 있습니다.</li>
35+
<li>스킬 순서와 스킬트리는 문자열로 표기합니다.
36+
37+
<ul>
38+
<li>예를 들어, <code>C → B → D</code> 라면 "CBD"로 표기합니다</li>
39+
</ul></li>
40+
<li>선행 스킬 순서 skill의 길이는 1 이상 26 이하이며, 스킬은 중복해 주어지지 않습니다.</li>
41+
<li>skill_trees는 길이 1 이상 20 이하인 배열입니다.</li>
42+
<li>skill_trees의 원소는 스킬을 나타내는 문자열입니다.
43+
44+
<ul>
45+
<li>skill_trees의 원소는 길이가 2 이상 26 이하인 문자열이며, 스킬이 중복해 주어지지 않습니다.</li>
46+
</ul></li>
47+
</ul>
48+
49+
<h5>입출력 예</h5>
50+
<table class="table">
51+
<thead><tr>
52+
<th>skill</th>
53+
<th>skill_trees</th>
54+
<th>return</th>
55+
</tr>
56+
</thead>
57+
<tbody><tr>
58+
<td><code>"CBD"</code></td>
59+
<td><code>["BACDE", "CBADF", "AECB", "BDA"]</code></td>
60+
<td>2</td>
61+
</tr>
62+
</tbody>
63+
</table>
64+
<h5>입출력 예 설명</h5>
65+
66+
<ul>
67+
<li>"BACDE": B 스킬을 배우기 전에 C 스킬을 먼저 배워야 합니다. 불가능한 스킬트립니다.</li>
68+
<li>"CBADF": 가능한 스킬트리입니다.</li>
69+
<li>"AECB": 가능한 스킬트리입니다.</li>
70+
<li>"BDA": B 스킬을 배우기 전에 C 스킬을 먼저 배워야 합니다. 불가능한 스킬트리입니다.</li>
71+
</ul>
72+
73+
<div class="footnotes">
74+
<hr>
75+
<ol>
76+
77+
<li id="fn1">
78+
<p>스킬 트리: 유저가 스킬을 배울 순서&nbsp;<a href="#fnref1">↩</a></p>
79+
</li>
80+
81+
</ol>
82+
</div>
83+
84+
85+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function solution(skill, skill_trees) {
2+
const non_relatable_skill = new RegExp(`[^${skill}]`, 'g');
3+
skill_trees = skill_trees.map(e => e.replaceAll(non_relatable_skill, ''));
4+
return skill_trees.filter(skill_tree => skill.startsWith(skill_tree)).length;
5+
}

0 commit comments

Comments
 (0)