


나의 풀이
import java.util.*;
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
String answer = "Yes";
ArrayList<String> list1 = new ArrayList<>(); // 1
ArrayList<String> list2 = new ArrayList<>();
for (String i : cards1) list1.add(i);
for (String i : cards2) list2.add(i);
int x = 0; // 2
int y = 0;
for (int i = 0; i < goal.length; i++) { // 3
if (x < list1.size() && goal[i].equals(list1.get(x))) { // 4
x++;
} else if (y < list2.size() && goal[i].equals(list2.get(y))) { // 5
y++;
} else { // 6
answer = "No";
break;
}
}
return answer;
}
}
과정
- cards1과 cards2를 담을 ArrayList list1과 list2를 만들어주고 cards1, cards2를 각각 list1과 list2에 담는다.
- list1과 list2의 크기와 비교할 정수 x, y를 선언한다
- goal의 크기만큼 for문을 돌리고
- 만약 x가 list1의 크기보다 작고, goal[i]번째와 list1(x)번째가 같으면 x++
- 아니면 y가 list2의 크기보다 작고, gaol[i]번째와 list2(y)번째가 같으면 y++
- 둘 다 해당되지 않는다면 초기에 설정한 answer = "Yes"를 "No"로 바꿔준다
다른 사람 풀이
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";
}
}
- 괜히 ArrayList로 바꿔줘서 풀었네요 그냥 cards1, 2와 비교해도 되네요