본문 바로가기
코딩테스트 준비/프로그래머스

[프로그래머스][C++] 카드 뭉치

by 스테디코디스트 2023. 9. 12.
반응형

<문제 소개>


<소스 코드>

#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를 리턴한다.


<코멘트>

어렵지 않게 풀 수 있었다!


<제출결과>