[프로그래머스/C++]Lv.1 - 카드 찾기

YH J·2023년 5월 8일
0

프로그래머스

목록 보기
79/168

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/159994

내 풀이

goal의 size가 0이 될 때 까지 while을 돌린다.
goal의 0번째 원소를 card1, 2의 0번째 원소와 비교한다.
같은 원소를 찾으면 해당 카드뭉치 배열 card에서 0번째 원소를 제거한다.
반복하다가 맞는 원소를 못찾으면 바로 No를 리턴한다.
while을 탈출하면 Yes를 리턴한다.

내 코드

#include <string>
#include <vector>

using namespace std;

string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) {
    string answer = "";
    string word;
    while(goal.size() != 0)
    {
        word = goal[0];
        goal.erase(goal.begin());
        if(word == cards1[0])
        {
            cards1.erase(cards1.begin());
        }
        else if(word == cards2[0])
        {
            cards2.erase(cards2.begin());
        }
        else
            return "No";
    }
    
    return "Yes";
}

다른 사람의 풀이

#include <string>
#include <vector>

using namespace std;


string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) {
  int l = 0;
  int r = 0;

  for (string& g: goal) {
    if (g == cards1[l]) {
      l++;
    } else if (g == cards2[r]) {
      r++;
    } else {
      return "No";
    }
  }

  return "Yes";
}

다른 사람의 풀이 해석

0부터 하면서 하나씩 제거해나가는게 아니라 goal의 모든 원소를 for문 돌리면서
index를 늘려가면서 비교한다.

profile
게임 개발자 지망생

0개의 댓글