1. 문제
2. 나의 풀이
배울 스킬트리(skill_trees)와 선행 스킬 문자열(skill)이 주어졌을 때 해당 스킬 트리를 몇 개를 배울 수 있는지 반환하는 문제다. 코드를 보면 크게 어렵지 않다는 것을 알 수 있다.
class Solution {
private boolean[] visit;
public int solution(String skill, String[] skill_trees) {
int answer = 0;
for(int i=0;i<skill_trees.length;i++){
visit = new boolean[skill.length()];
String curSkill = skill_trees[i];
boolean success = true;
for(int j=0;j<curSkill.length();j++){
if(!isPossibleSkill(skill, curSkill.charAt(j))){ //스킬찍을 수 없으면 종료
success = false;
break;
}
}
if(success){
answer++;
}
}
return answer;
}
private boolean isPossibleSkill(String skill, char curSkill){
for(int i=0;i<skill.length();i++){
if(skill.charAt(i) == curSkill){ //skill과 현재 찍을 curSkill이 같을 경우 이전 스킬을 찍었는지 검사
for(int j=0;j<i;j++){
if(visit[j] == false){
return false;
}
}
visit[i] = true; //스킬을 찍었으므로 visit true
}
}
return true;
}
}
'Algorithm' 카테고리의 다른 글
[Algorithm] 시간 복잡도(Time Complexity) (0) | 2021.11.15 |
---|---|
[알고리즘] 프로그래머스 - 올바른 괄호 (Stack) (0) | 2021.11.15 |
[알고리즘] 2018 카카오 블라인드 - 캐시 (0) | 2021.03.26 |
[알고리즘] 프로그래머스 - 순위 (0) | 2021.03.24 |
[알고리즘] 2018 카카오 블라인드 - 프렌즈4블록 (0) | 2021.02.03 |