[코딩테스트] 프로그래머스 - 스킬트리(Java)

proman·2022년 9월 9일
0

Coding-Test

목록 보기
7/21
post-thumbnail

🌮 설명

레벨: 2
언어: Java

🍉 느낀점

제가 사용한 방법은 큐를 사용하여 스킬당 비교를 하는방법이였는데,
1. 큐에 해당스킬이 미존재시에는 넘어가고
2. 큐에 해당스킬이 존재하는데 확인하는 순서가 맞지않으면 다른 스킬트리로 넘어가고 맞으면 카운터 올리고
이런 방식으로 풀었는데

가장좋아요많이 받은코드는
1. 스킬트리 루프돌리고,
2. 해당스킬트리에 스킬순서를 정규식으로 추출하여
3. 추출값을 스킬순서에 조회시 0인 처음맞는 경우가 아니면 삭제하고 맞으면 남기는 식으로
4. 해당 카운터가 반환

결론은 정규식사용해서 풀었고, 새로운방법에 대해 잘알아갔습니다..

🧃 내가 작성한 코드

import java.util.*;

class Solution {
    public int solution(String skill, String[] skill_trees) {
        Queue<Character> queue = new LinkedList<>();
        for(char ch: skill.toCharArray()) {
            queue.offer(ch);    
        }
        
        int result = 0;
        out:for(int i = 0; i < skill_trees.length; i++) {
            Queue<Character> inque = new LinkedList<>(queue);
            for(char ch: skill_trees[i].toCharArray()) {
                if(!inque.contains(ch)) continue;
                
                if(inque.peek() != ch) continue out;
                    
                inque.poll();
            }
            result++;
        }
        
        return result;
    }
}

🧄 좋아요 가장 많이 받은 코드

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;
    }
}

0개의 댓글