import java.util.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
String answer = "Yes";
List<String> arr1 = new ArrayList<>(Arrays.asList(cards1));
List<String> arr2 = new ArrayList<>(Arrays.asList(cards2));
List<String> goalArr = new ArrayList<>(Arrays.asList(goal));
for (String s : goalArr) {
if(!arr1.isEmpty() && arr1.get(0).equals(s)) {
arr1.remove(0);
continue;
} else if (!arr2.isEmpty() && arr2.get(0).equals(s)) {
arr2.remove(0);
continue;
} else {
answer ="No";
break;
}
}
return answer;
}
}
처음에 있는것과 비교해보고, 맞으면 삭제, 없으면 No로 끝나게 만들어야겠다고 설계. -> ArrayList 이용.
금방 풀었다.
배운 점은,
List<String> arr = Arrays.asList(card1);
라고 한다면, ArrayList가 아닌 List로 선언되어 remove method를 사용 할 수 없다는 것이다.
import java.io.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
int cardIdx1 = 0;
int cardIdx2 = 0;
for(int i=0; i<goal.length; i++){
String target = goal[i];
if(cardIdx1 < cards1.length && target.equals(cards1[cardIdx1]))
cardIdx1 ++;
else if (cardIdx2 < cards2.length && target.equals(cards2[cardIdx2]))
cardIdx2++;
else
return "No";
}
return "Yes";
}
}
나처럼 지우는게 아니라, 인덱스를 카운트 하면서 그것과 비교.