Notice
Recent Posts
Recent Comments
Link
거북이처럼 코딩해도 괜찮으려나
003. 스킬 트리 본문
728x90
- 사용 언어 : C#
- 체감 난이도 : 쉬움
- 활용 : string 관련 함수
<작성한 코드>
public int solution(string skill, string[] skill_trees)
{
int answer = 0;
bool check;
int char_index; // 비교하고자 하는 단어의 위치
foreach (string skill_tree in skill_trees)
{
check = true;
for (int i = skill.Length - 1; i > 0; i--) // skill의 마지막부터 비교함
{
char_index = skill_tree.IndexOf(skill.Substring(i, 1));
if (char_index != -1) // 비교하고자 하는 단어가 문자열에 있을 경우
{
// 선행 스킬이 앞에 없을 경우, false
if (!skill_tree.Substring(0, char_index + 1).Contains(skill.Substring(i - 1, 1)))
check = false;
}
}
if (check)
answer++;
}
return answer;
}
(아니 이거 C#전용 코드블럭이 있었구낭ㅋㅋㅋㅋ)
이번 알고리즘은 아주 만족이다. 내 생각대로 구현이 완벽히 되기도 했고, 다른 사람들의 코드보다 현저히 짧고 보기 좋았다. 아래는 아이디어 노트이다.
첫 번째로 쓴 것은 선행 스킬 앞에 후행 스킬이 있는지 확인하는 법이다. 이는.. 그냥 억지 같아서 정통으로 가기로했다.
그 방법이 두 번째이다. 마지막 후행 스킬부터 차례대로 검사하여, 앞에 선행스킬을 배웠는지 검사한다.
false가 되면 for문 효율을 높히기 위해 바로 break하였다.
역시 쓰면서 하니까 잘 되는 것 같다.
'코딩 > 알고리즘' 카테고리의 다른 글
005. 예상 대진표 (0) | 2021.04.14 |
---|---|
004. 조이스틱 (0) | 2021.04.10 |
002. 시저 암호 (0) | 2021.04.08 |
001. 문자열 다루기 기본 (0) | 2021.04.07 |
코딩테스트 무작정 연습해보기 (with. 프로그래머스) (0) | 2021.04.06 |