알고리즘/그 외
프로그래머스[Level2] - 스킬 트리 [Summer/Winter Coding(~2018)]
또또쪼
2020. 8. 28. 16:55
728x90
300x250
https://programmers.co.kr/learn/courses/30/lessons/49993#fnref1
코딩테스트 연습 - 스킬트리
programmers.co.kr
단순 문자열 charAt 함수를 통해서 처리하였다.
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
for(int n = 0; n<skill_trees.length;n++) {
String str = skill_trees[n];
boolean flag = false;
int pt = 0; // 현재 순서 포인터
for(int i = 0;i<str.length(); i++) {
// 스킬사전에 있는 스킬인가?
if(skill.contains(String.valueOf(str.charAt(i)))) {
// 순서가 다른가?
if(skill.charAt(pt)!=str.charAt(i)) {
flag = true;
break;
} else {
pt++;
}
}
}
if(!flag)
answer++;
}
return answer;
}
}
다른 사람의 풀이도 보았는데, 개인적으로 대단하다고 생각이 들었던 코드.
어떻게 indexOf 를 생각하고, 정규식 표현을 skill을제외한 문자열을 공백으로 바꿔버리는 로직을 생각할 수 있을까 대단하다!!!
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;
}
}
728x90