프로그래머스/1레벨
카드 뭉치/C++
Koalitsiya
2023. 2. 28. 12:03
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 조건
- cards1, cards2에 들어있는 단어들로 goal을 만들 수 있으면 Yes, 아니면 No 리턴
- 각 배열에 들어있는 단어들은 배열 내의 순서대로만 사용 가능
- 특정 카드를 사용하지 않고 넘어가는 것은 불가능
풀이 방법
- 각 배열에서 단어가 얼마만큼 사용됐는지 판별하기 위한 index1, index2 선언
- goal 배열을 범위 기반 for문을 돌려 카드 배열의 index 번째의 문자열이 str과 일치하고 index가 카드 배열의 크기보다 작으면 해당 index를 증가시킨다.
- 두 개의 배열 모두 조건을 만족시키지 않는다면 goal을 만들 수 없으므로 No를 리턴한다.
- goal의 끝까지 조건을 모두 만족 시켰다면 goal을 만들 수 있으므로 Yes를 리턴한다.
#include <string>
#include <vector>
using namespace std;
string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) {
string answer = "Yes";
int index1, index2 = 0;
for(auto& str : goal) {
if(cards1[index1] == str && cards1.size() > index1)
index1++;
else if(cards2[index2] == str && cards2.size() > index2)
index2++;
else {
answer = "No";
break;
}
}
return answer;
}