
내가 작성한 코드
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
for (String tree : skill_trees) {
StringBuilder filtered = new StringBuilder();
// 선행 스킬만 추출
for (char c : tree.toCharArray()) {
if (skill.indexOf(c) != -1) {
filtered.append(c);
}
}
// 시작이 skill과 맞는지 확인
if (skill.startsWith(filtered.toString())) {
answer++;
}
}
return answer;
}
}
다른 사람의 코드
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
// skill_trees 배열을 ArrayList로 변환
ArrayList<String> skillTrees = new ArrayList<String>(Arrays.asList(skill_trees));
// skillTrees 리스트의 요소를 하나씩 순회할 반복자 생성
Iterator<String> it = skillTrees.iterator();
// 모든 스킬트리에 대해 검사
while (it.hasNext()) {
// 정규식을 활용해 skill에 포함된 문자만 남기고 제거
String filtered = it.next().replaceAll("[^" + skill + "]", "");
// filtered가 skill의 선행 순서로 시작하지 않으면 제거
if (skill.indexOf(filtered) != 0) {
it.remove();
}
}
// 남은 반복자 수
answer = skillTrees.size();
return answer;
}
}
Share article