-
[프로그래머스] 카드 뭉치 c++Coding Test/programmers 2023. 2. 16. 19:43728x90
문제 설명
문자열로 이루어진 배열 cards1, cards2와 원하는 단어 배열 goal이 매개변수로 주어질 때, cards1과 cards2에 적힌 단어들로 goal를 만들 있다면 "Yes"를, 만들 수 없다면 "No"를 return하는 solution 함수를 완성해주세요.
제한 사항
- 1 ≤ cards1의 길이, cards2의 길이 ≤ 10
- 1 ≤ cards1[i]의 길이, cards2[i]의 길이 ≤ 10
- cards1과 cards2에는 서로 다른 단어만 존재합니다.
- 2 ≤ goal의 길이 ≤ cards1의 길이 + cards2의 길이
- 1 ≤ goal[i]의 길이 ≤ 10
- goal의 원소는 cards1과 cards2의 원소들로만 이루어져 있습니다.
- cards1, cards2, goal의 문자열들은 모두 알파벳 소문자로만 이루어져 있습니다.
입출력 예
cards1 cards2 goal result ["i", "drink", "water"] ["want", "to"] ["i", "want", "to", "drink", "water"] "Yes" ["i", "water", "drink"] ["want", "to"] ["i", "want", "to", "drink", "water"] "No" 풀이
카드를 사용하지 않고 다음 카드로 넘어 갈 수 없음으로 iterator를 이용해서 풀었습니다.
goal 요소중에 같은 단어가 있다면 ++iter 후 다음 요소를 검사합니다.
iter1, 2에 같은 단어가 없다면 goal의 단어 배열을 만들 수 없는 것임으로 "No"를 반환합니다.
#include <string> #include <vector> #include <queue> using namespace std; string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) { string answer = "Yes"; auto iter1 = cards1.begin(); auto iter2 = cards2.begin(); for(int i = 0; i < goal.size(); i++){ if(goal[i] == *iter1){ ++iter1; } else if(goal[i] == *iter2){ ++iter2; } else{ return "No"; } } return answer; }
728x90'Coding Test > programmers' 카테고리의 다른 글
[프로그래머스] 미로 탈출 c++ (0) 2023.02.21 [프로그래머스] 게임 맵 최단거리 c++, python (0) 2023.02.17 [프로그래머스] 둘만의 암호 c++ (0) 2023.02.11 [프로그래머스] 괄호 회전하기 c++ (0) 2023.01.30 [프로그래머스] 주식가격 java c++ (0) 2023.01.28 - 1 ≤ cards1의 길이, cards2의 길이 ≤ 10