조앤의 기술블로그
[프로그래머스] 스킬트리 (java) 본문
[문제]
[문제접근]
[코드]
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
boolean[] visit = new boolean[skill.length()];
for(int i = 0; i < skill_trees.length; i++){
String mySkill = skill_trees[i];
int skillIndex = 0;
boolean flag = true;
for(int j = 0; j < mySkill.length(); j++){
for(int k = 0; k < skill.length(); k++){
if(skill.charAt(k) == mySkill.charAt(j)){
if(k == skillIndex)
skillIndex++;
else
flag = false;
}
}
}
if(flag == true)
answer++;
}
return answer;
}
}
3중 for문인게 좀 마음에 안든다.
[다른 풀이]
public int solution(String skill, String[] skill_trees) {
int answer = 0;
int treeLength = skill_trees.length;
for(int i=0; i<treeLength; i++){
boolean flag = true;
String[] skills = skill_trees[i].split("");
int cnt=0;
int skillsLen = skills.length;
for(int j=0; j<skills.length; j++){
if(cnt < skill.indexOf(skills[j])){
flag = false;
break;
}else if(cnt == skill.indexOf(skills[j])){
cnt++;
}
}
if(flag){
answer++;
}
}
return answer;
}
[또다른 풀이]
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
ArrayList<String> skillTrees = new ArrayList<String>(Arrays.asList(skill_trees));
//ArrayList<String> skillTrees = new ArrayList<String>();
Iterator<String> it = skillTrees.iterator();
while (it.hasNext()) {
if (skill.indexOf(it.next().replaceAll("[^" + skill + "]", "")) != 0) {
it.remove();
}
}
answer = skillTrees.size();
return answer;
}
}
[참고]
https://n1tjrgns.tistory.com/184
[링크]
'Programming > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / 해시] 완주하지 못한 선수 (java) (0) | 2020.03.27 |
---|---|
[프로그래머스 / 스택&큐] 프린터 (java) (0) | 2020.03.25 |
[프로그래머스 / 카카오] 문자열 압축 (java) (0) | 2020.03.23 |
[프로그래머스] 카카오 프렌즈 컬러링북 (java) (0) | 2020.03.23 |
[프로그래머스 / SQL] SELECT (mysql) (0) | 2020.03.23 |