티스토리 뷰

import java.util.*;

class Solution {
    public int solution(String skill, String[] skill_trees) {
        int answer = 0;
        
        Queue<Character> queue = new LinkedList<Character>();
        for(int i=0; i<skill_trees.length; i++){
            for(int k=0; k<skill.length(); k++){
                queue.add(skill.charAt(k));
            }
            if(check(skill_trees[i], queue)){
                answer++;
            }
            queue.clear();
        }
        return answer;
    }
    
    public boolean check(String skill, Queue<Character> queue){
        for(int i=0; i<skill.length(); i++){
            char target = skill.charAt(i);
            if(queue.contains(target)){
                Character q = queue.poll();
                if(!q.equals(target)) return false;
            }
        }
        return true;
    }
}

 

check함수를 통해 가능한 스킬트리인지 확인한다.

큐에 포함되어 있는데 가장 헤드에 있는 값이  target과 다르다면 false를 반환하고 이외에는 true를 반환한다.

큐에 포함되어 있지 않은 스킬은 확인하지 않으며

poll()함수를 통하여 지워나가면서 진행한다.

 

1. 큐에  "CBD"가 저장되어있고  검사하는 skill이 "BACDE"라면

     B 첫 IF문 들어가고 두번째 IF문에서 C와 B가 같지 않으므로 false 반환

 

2. 큐에  "CBD"가 저장되어있고  검사하는 skill이 "CBADF"라면

     C 첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐에 "BD"만 남음

     B 첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐에 "D"만 남음

     A 무시 

     D 첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐가 비어있음

     F 무시

     반복문 다돌고 true 반환

 

3. 큐에  "CBD"가 저장되어있고  검사하는 skill이 "AECB"라면

     A 무시

     E 무시

     C  첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐에 "BD"만 남음

     B  첫 IF문 들어가고 두번째 IF문은 들어가지 않음 + 큐에 "D"만 남음

     반복문 다돌고 true 반환

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함