Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- directx
- softeer
- UnrealEngine4
- 백준
- RVO
- 프로그래머스
- 줄 세우기
- IFileDialog
- 티스토리챌린지
- DeferredRendering
- algorithm
- 언리얼엔진5
- Programmers
- RootMotion
- GeeksForGeeks
- UnrealEngine5
- 1563
- C
- const
- DirectX11
- 오블완
- NRVO
- 2294
- baekjoon
- UE5
- C++
- Frustum
- winapi
- Unreal Engine5
- 팰린드롬 만들기
Archives
- Today
- Total
Game Develop
[Algorithm] Programmers :: 스킬트리 본문
https://school.programmers.co.kr/learn/courses/30/lessons/49993
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
|
int solution(string skill, vector<string> skill_trees)
{
int answer = 0;
map<char, char> m;
m[skill[0]] = '?'; //
for (int i = 1; i < skill.size(); ++i)
{
m[skill[i]] = skill[i - 1];
}
for (int i = 0; i < skill_trees.size(); ++i)
{
string curSkill = skill_trees[i];
char prevSkill = '?';
bool isCheck = true;
for (int j = 0; j < curSkill.size(); ++j)
{
if (m.count(curSkill[j]) == 0) continue;// 무관한 스킬이면
if (m[curSkill[j]] != prevSkill) // 올바른 관계가 아니면
{
isCheck = false;
break;
}
prevSkill = curSkill[j];
}
if (isCheck) ++answer;
}
return answer;
}
|
cs |
종속관계의 스킬들은 먼저 각자의 부모를 지정한다. 맨 처음스킬같은 경우는 임의로 '?'을 부모로 지정한다.
그리고 prevSkill변수로 현재 어디까지 종속관계의 스킬트리가 진행됐는지를 체크한다. 물론 초깃값은 '?'이다.
이후 스킬트리를 검사하면서 종속관계랑 상관없는 스킬은 그냥 넘기고(map의 count를 이용해 종속관계의 스킬인지 아닌지를 판별), 종속관계의 스킬일 경우 해당 스킬의 부모값과 prevSkill값이 일치한지 체크하고 여부에 따라 적절한지 아닌지 판단한다.
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm] Programmers :: 쿼드압축 후 개수 세기 (0) | 2023.06.03 |
---|---|
[Algorithm] Programmers :: 방문 길이 (0) | 2023.06.03 |
[Algorithm] Programmers :: n진수 게임 (0) | 2023.06.02 |
[Algorithm] Programmers :: 파일명 정렬 (0) | 2023.06.02 |
[Algorithm] Programmers :: 프렌즈4블록 (0) | 2023.06.02 |