function solution(cards1, cards2, goal) {
let stack = [];
for(let i=0; i<goal.length;i++){
if(goal[i] === cards1[0]){
stack.push(cards1.shift())
}
else if(goal[i] === cards2[0]){
stack.push(cards2.shift())
}
else return "No"
}
if(stack.toString() == goal)
return "Yes"
}
진짜 간단한 문제였지만 잊고 있던 문제가 있었다. JS에서는 배열을 서로 비교하면 안된다는 사실을...
JS에서는 비교연산자를 배열이나 객체에 비교해버리면 메모리를 참조해버리기 때문에 내용물이 같더라도 false를 리턴한다. 때문에 나는 스택을 만들어서 하나씩 집어넣고 원래의 goal과 비교하기 위해 String으로 변환한 후 비교를 해서 리턴을 했다. 하지만 풀고나서 다른사람들의 풀이를 보니 스택을 사용할 필요도 없었다. 그저 반복문 안에서 기존 cards 배열들과 goal배열을 비교하면서 cards들을 하나씩 빼다가 아님말고 식으로 No를 return하고 다 빠지면 Yes를 리턴하면 됐던것,,, 쓸모없는 메모리 낭비였다. 좀 더 생각해보고 풀자..