프로그래머스 스킬트리
https://school.programmers.co.kr/learn/courses/30/lessons/49993
소요시간 30분
확실히 문제 풀이를 확실하게 정리해두고 코드를 짜니 문제푸는데는 훨씬 수월했습니다.
코드는 이렇습니다.
package Question;
/**
* 프로그래머스 스킬트리
* https://school.programmers.co.kr/learn/courses/30/lessons/49993
*
* 아이디어
* 0. 해당 문자열 순회때마다 skill 검색
* 1. 있다면 skill.charAt(i) 와 비교
* 2. 같다면 i++, 다음 char 로 넘어감
* 2-1. 다르다면 break 후 끝내기
* 3. skill tree의 끝까지 도달 했다면 result++
*
*
* */
public class SkillTree {
public static void main(String[] args) {
System.out.println(solution("CBD", new String[]{"BACDE", "CBADF", "AECB", "BDA"}));
}
public static int solution(String skill, String[] skill_trees) {
int answer = 0;
for (String skillT : skill_trees) {
// 비교할때 필요한 인덱스 표시기, 순회가 다 되면 0으로 돌아간다.
int index = 0;
boolean judge = true;
for (int i = 0; i < skillT.length(); i++) {
// 스킬트리 검색 후 맨 첫번째 인덱스면 순회 시작
if(skill.contains(String.valueOf(skillT.charAt(i)))){
if(skill.charAt(index) == skillT.charAt(i)){
index++;
}else{
judge = false;
break;
}
}
}
// 문제없이 끝까지 돌았다면 answer 값 추가
if(judge) answer++;
}
return answer;
}
}
사실 첫번째 열인가? 에 대한건 코드를 짜고보니 굳이 그럴필요없이 찾아주는 index를 0으로 해서
계속 조정하면 되었습니다.