알고리즘/프로그래머스
카드 뭉치
베리영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이기 때문이다