반응형
<문제 소개>
<소스 코드>
#include <string>
#include <vector>
using namespace std;
string solution(vector<string> cards1, vector<string> cards2, vector<string> goal)
{
string answer = "Yes";
int x = 0; // card1에서 나와야하는 단어의 인덱스 번호
int y = 0; // card2에서 나와야하는 단어의 인덱스 번호
for(int i = 0 ; i < goal.size(); i++)
{
string curWord = goal[i];
if(curWord == cards1[x])
{
// 현재 단어가 카드뭉치 1에 있는 경우
x++;
}
else if(curWord == cards2[y])
{
// 현재 단어가 카드뭉치 2에 있는 경우
y++;
}
else
{
answer = "No";
break;
}
}
return answer;
}
<풀이과정>
1. 기본 리턴 값 answer를 "Yes"로 초기화
2. 각 cards에서 나와야 하는 단어의 인덱스를 가리킬 변수 x,y를 각각 0으로 초기화
3. goal을 돌면서 현재 단어 curWord를 goal의 i번째 원소로 선언하고, 해당 단어가 cards1의 x번째 원소가 같은 경우 순서대로 잘 나온 것이므로 x만 증가시킨 후 다음 반복을 진행한다.
4. 마찬가지로 curWord가 cards2의 y번째 원소와 같은 경우에도 y를 증가시킨 뒤 다음 반복을 진행한다.
5. 하지만 이외의 경우는 순서대로 단어들이 나오지 않은 경우이거나 없는 단어인 경우 이므로 answer에 "No"를 넣어주고 break를 이용해 반복문을 빠져나온다.
6. 반복문이 끝난 뒤 answer를 리턴한다.
<코멘트>
어렵지 않게 풀 수 있었다!
<제출결과>