728x90
반응형
문제
코드
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) {
string answer = "";
int j = 0, k = 0;
for (int i = 0; i < goal.size(); ++i)
{
if (goal[i] == cards1[j])
{
j++;
continue;
}
else if (goal[i] == cards2[k])
{
k++;
continue;
}
else
{
answer = "No";
return answer;
}
}
answer = "Yes";
return answer;
}
// 다른 풀이
#include <vector>
#include <string>
std::string solution(std::vector<std::string> cards1, std::vector<std::string> cards2, std::vector<std::string> goal) {
int index1 = 0; // cards1의 인덱스
int index2 = 0; // cards2의 인덱스
int goalIndex = 0; // goal의 인덱스
// goal의 모든 단어를 확인합니다.
while (goalIndex < goal.size()) {
bool found = false;
// cards1에서 현재 goal 단어를 찾습니다.
if (index1 < cards1.size() && cards1[index1] == goal[goalIndex]) {
index1++;
found = true;
}
// cards2에서 현재 goal 단어를 찾습니다.
if (!found && index2 < cards2.size() && cards2[index2] == goal[goalIndex]) {
index2++;
found = true;
}
// 만약 현재 goal 단어를 두 카드 뭉치에서도 찾지 못했다면, goal을 만들 수 없습니다.
if (!found) {
return "No";
}
goalIndex++; // 다음 goal 단어로 넘어갑니다.
}
// 모든 goal 단어를 찾았다면, goal을 만들 수 있습니다.
return "Yes";
}
문제 해설
- Goal 배열을 for문을 이용해서 goal[i] 의 문자와 cards1[j], cards2[k]가 같은지 검사
- 같다면 j 또는 k의 인덱스를 더해주고 continue
- 다르면 "No" 로 바로 리턴
728x90
반응형
'코딩테스트 > 프로그래머스(C++)_Level.1' 카테고리의 다른 글
[프로그래머스/C++] Lv.1 소수 찾기 (0) | 2024.01.04 |
---|---|
[프로그래머스/C++] Lv.1 모의고사 (0) | 2024.01.03 |
[프로그래머스/C++] Lv.1 폰케몬 (0) | 2023.12.28 |
[프로그래머스/C++] Lv.1 푸드 파이트 대회 (0) | 2023.12.19 |
[프로그래머스/C++] Lv.1 두 개 뽑아서 더하기 (0) | 2023.12.14 |