[JAVA 문제 풀이] 344. 스킬트리

프로그래머스 (49993)
Stupefyee's avatar
Jun 26, 2025
[JAVA 문제 풀이] 344. 스킬트리
notion image
 

내가 작성한 코드

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

stupefyee