diff --git "a/week1/7. \354\212\244\355\202\254 \355\212\270\353\246\254/Solution.java" "b/week1/7. \354\212\244\355\202\254 \355\212\270\353\246\254/Solution.java" index 49ec297..e83864f 100644 --- "a/week1/7. \354\212\244\355\202\254 \355\212\270\353\246\254/Solution.java" +++ "b/week1/7. \354\212\244\355\202\254 \355\212\270\353\246\254/Solution.java" @@ -1,10 +1,77 @@ +import java.util.Arrays; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Queue; +import java.util.Set; + /* 7. 스킬 트리 https://programmers.co.kr/learn/courses/30/lessons/49993 */ -class Solution { - public int solution(String skill, String[] skill_trees) { - int answer = 0; - return answer; +class Solution7 { + + public static void main(String[] args) { + + String[] skill_trees = { "BACDE", "CBADF", "AECB", "BDA" }; + + System.out.println(solution("CBD", skill_trees)); + } + + public static int solution(String skill, String[] skill_trees) { + + String[] formalSkillTree = skill.split(""); + Set skillTreeSet = new HashSet(); + + for (String skillOrder : formalSkillTree) { + skillTreeSet.add(skillOrder); + } + + int formalSkillTreeCount = 0; + + for (String notFormalSkillTree : skill_trees) { + + boolean isFormal = true; + + Queue q = new LinkedList(Arrays.asList(formalSkillTree)); + + for (String notFormalSkillOrder : notFormalSkillTree.split("")) { + + if (skillTreeSet.contains(notFormalSkillOrder)) { + + if (notFormalSkillOrder.equals(q.peek())) { + + q.poll(); + + } else { + + isFormal = false; + break; + + } + + } + + } + + if (isFormal) + formalSkillTreeCount++; + } + + return formalSkillTreeCount; } } + +// public int solution(String skill, String[] skill_trees) { +// int answer = 0; +// ArrayList skillTrees = new ArrayList(Arrays.asList(skill_trees)); +// //ArrayList skillTrees = new ArrayList(); +// Iterator it = skillTrees.iterator(); + +// while (it.hasNext()) { +// if (skill.indexOf(it.next().replaceAll("[^" + skill + "]", "")) != 0) { +// it.remove(); +// } +// } +// answer = skillTrees.size(); +// return answer; +// } \ No newline at end of file