💡 문제
💬 입출력 예시
📌 풀이(소스코드)
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
int idx1 = 0;
int idx2 = 0;
for (String s: goal) {
if (idx1 < cards1.length && cards1[idx1].equals(s)) {
idx1++;
continue;
}
if (idx2 < cards2.length && cards2[idx2].equals(s)) {
idx2++;
continue;
}
return "No";
}
return "Yes";
}
}
📄 해설
접근
- 아주 단순한 구현 문제이다.
equasl
메소드만 사용할 줄 알면 쉽게 풀 수 있다.
goal
의 문자열을 순서대로 순회하면서, 해당 문자열이 각각의 카드 뭉치의 다음 카드인지를 확인한다. 다음 카드가 아니면 중간에 No
를 반환하고, 순회가 무사히 끝났다면 Yes
를 반환한다.
과정
- 각 카드 뭉치의 다음 번호를 위한 두개의 인덱스 변수
idx1
, idx2
를 사용한다.
goal
을 순회하면서, 현재 문자열이 각 카드뭉치 cards1
, cards2
의 다음 카드와 일치하는지 확인한다.
- 일치하면
continue
를 통해 다음 문자열을 확인하고, 일치하지 않으면 No
를 반환한다.
- 반복이 전부 끝나면, 문장 완성이 가능한 것이므로,
Yes
를 반환한다.