풀이:
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
String answer = "Yes";
int firstL=0;
int secondL=0;
for(int i=0; i<goal.length; i++){
if(firstL<cards1.length&&goal[i].equals(cards1[firstL])){
firstL++;
continue;
}
if(secondL<cards2.length&&goal[i].equals(cards2[secondL])){
secondL++;
continue;
}
answer="No";
return answer;
}
answer="Yes";
return answer;
}
}
맨 처음 문제를 잘못 이해했을때는 cards1의 어느 특수한 index에 cards2를 넣어야된다고 착각해서 정렬로 접근했다.
하지만 생각을 다시해보니 이건 결국 goal이라는 요리 방법이 있고 cards1과 cards2에는 각각 그 요리 방법에 해당하는 재료들이 있는거라고 생각해보면 위와 같은 풀이가 나온다.
cards1 혹은 cards2에 원하는 값이 없다면 continue가 실행돼지않고 이는 곧 goal을 만들 재료가 두 배열 모두 없다는 것이다.
그렇지 않다면 continue를 통해 for문을 지속적으로 return하지않고 순환하여 전체 for문을 빠져나오게 된다.
그렇다는 것은 결국 goal에 해당하는 요리를 만들 수 있다는 것으로 Yes를 리턴해주면 된다.
최근 문제를 풀떄마다 뭔가 복잡하게 생각하는 경향이 있는거 같은데 이 버릇을 좀 고치고 쉽게 쉽게 생각을 먼저 해보는 습관을 길러야겠다.