728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제]

입출력 예
| skill | skill_trees | return |
| "CBD" | ["BACDE", "CBADF", "AECB", "BDA"] | 2 |
📍 [코드]
class Solution {
/*
skill 순회
skill_trees 순회하며
없으면 -> 무시
있으면 -> 인덱스 맞는지 확인
*/
public int solution(String skill, String[] skill_trees) {
int cnt = 0;
for(String tree : skill_trees){
if(checkTree(tree, skill)) cnt++;
}
return cnt;
}
public boolean checkTree (String tree, String skill){
int skillIdx = 0;
for(char c : tree.toCharArray()) {
int idx = skill.indexOf(c);
if(idx == -1) continue; // 없으면 무시
if(idx == skillIdx) skillIdx++; // 다음 단계
else return false; // 불가능
}
return true;
}
}
💡 접근법
checkTree메서드 활용skill_trees의 객체인tree를 한단어씩 순회하며skill에서 인덱스를 찾는다.- 인덱스가 없으면 무시
➡️ skill에 해당되지 않음 - 있으면 다음 인덱스로 넘어간다.
➡️ 다음 skill - skill 인덱스와 값이 맞지 않으면, 순서가 옳지 않은 것이므로 불가능
checkTree반환값이true이면 카운트
✅ tree 순회 방식 사용
💬 마무리
처음에 indexOf()를 활용할 생각을 못했다. 이는 활용에 익숙치 않아서가 아닐까 싶다.
이번에 indexOf() 활용법을 익혔고, 유용함을 깨달았으니 다음엔 잘 활용할 수 있을 것 같다.
728x90
반응형
