베리영young 2025. 7. 12. 20:58

사용 알고리즘:

사용 언어: java

 

import java.util.*;

class Solution {
    String a = "No";
    
    public String solution(String[] cards11, String[] cards22, String[] goall) {
        //String answer = "";
        List<String> cards1 = new ArrayList<>();
        List<String> cards2 = new ArrayList<>();
        List<String> goal = new ArrayList<>();
        
        for(String c : cards11) {
            cards1.add(c);
        }
        for(String c : cards22) {
            cards2.add(c);
        }
        for(String c : goall) {
            goal.add(c);
        }
        
        List<String> answer = new ArrayList<>();
        dfs(cards1, cards2, goal, answer);
        return a;
    }
    
    public void dfs(List<String> cards1, List<String> cards2, List<String> goal, List<String> answer) {
        if(!answer.isEmpty()){
        int idx = answer.size() - 1;
        if(!answer.get(idx).equals(goal.get(idx))) {
            return;
        }}
        if(answer.equals(goal)) {
            a = "Yes";
            return;
        }
        
        //L1
        if(!cards1.isEmpty()) {
            answer.add(cards1.remove(0));
            dfs(cards1, cards2, goal, answer);
            cards1.add(0, answer.remove(answer.size() - 1));
        }
        //L2
        if(!cards2.isEmpty()) {
            answer.add(cards2.remove(0));
            dfs(cards1, cards2, goal, answer);
            cards2.add(0, answer.remove(answer.size() - 1));
        }
    }
}

 

코드가 너무 복잡한 거 같아서

다른 블로그를 찾아보니까 이중 for문으로 풀었다

 

각 카드 배열의 길이는 최대 10이기 때문이다