https://school.programmers.co.kr/learn/courses/30/lessons/159994
배열에서 카드를 순서대로만 뺄 수 있으며, 한 번에 한 배열에서 여러 장을 사용할 수 있으므로 큐를 사용해 주었다. 이 때, 큐를 두 개를 만들어 각각의 카드를 넣고 goals와 각 큐의 최상단 요소를 비교한 후 일치하면 poll을 해 주었다. 모든 큐의 최상단 요소와 일치하지 않는 경우에는 answer가 No가 되게 코딩을 해 주었다.
import java.util.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
//배열을 큐에 넣고, goal에서의 단어와 비교하면 됨
Queue<String> cardsQueue1 = new LinkedList<>();
Queue<String> cardsQueue2 = new LinkedList<>();
String answer = "Yes";
for(int i=0;i<cards1.length;i++){
cardsQueue1.add(cards1[i]);
}
for(int i=0;i<cards2.length;i++){
cardsQueue2.add(cards2[i]);
}
for(int i=0;i<goal.length;i++){
String c1 = cardsQueue1.peek();
String c2 = cardsQueue2.peek();
if(!cardsQueue1.isEmpty() && c1.equals(goal[i])){
cardsQueue1.poll();
}else if(!cardsQueue2.isEmpty() && c2.equals(goal[i])){
cardsQueue2.poll();
}else{
answer = "No";
}
}
return answer;
}
}