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

JangGwon·2022년 12월 8일
0

문제설명


내 풀이

cards1, cards2 배열에 담긴 단어들을 모두 사용하여 goal의 문자열을 만드는 문제인데, 조건이 하나 있다. cards1과 cards2 배열의 단어를 순서대로 사용하여 조합해야한다는점이다.
그렇기에 이번 문제는 cards1, cards2 배열의 피봇을 이용한 투포인터 알고리즘을 사용하여 풀었고, 결과 도출은 goal 배열을 모두 순회했을 때, cards1 피봇 + cards2 피봇 합이 goal 배열 길이의 합과 일치하는지 체크하는식으로 풀었다.


코드

#include <string>
#include <vector>

using namespace std;

string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) {
    int x_pivot = 0;
    int y_pivot = 0;
    int now_pivot = 0;
    
    while (now_pivot < goal.size())
    {
        while (cards1[x_pivot] == goal[now_pivot])
        {
            now_pivot++;
            x_pivot++;
        }
        while (cards2[y_pivot] == goal[now_pivot])
        {
            now_pivot++;
            y_pivot++;
        }
        if (cards1[x_pivot] != goal[now_pivot] && cards2[y_pivot] != goal[now_pivot])
        {
            now_pivot++;
        }
    }
    if (y_pivot + x_pivot == goal.size())
    {
        return "Yes";
    }
    
    return "No";
}

0개의 댓글