-
https://school.programmers.co.kr/learn/courses/30/lessons/159994?language=cpp
아이디어
goal을 순회하며 cards1, cards2에 매칭되는 단어가 있는지 확인하고 존재한다면 각각의 cards를 나타내는 포지션 변수를 증가시키고 그렇지 않다면 지나가는 과정을 반복한다. 반복과정의 시작과 종료지점의 cards를 나타내는 포지션 변수의 합을 비교하여 증가하지 않았다면 카트가 존재하지 않는 것으로 판단한다.
C++
#include <string> #include <vector> using namespace std; string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) { string answer = "Yes"; int p1 = 0, p2 =0; for(auto iter : goal){ int total = p1+p2; if(iter == cards1[p1]) p1++; else if(iter == cards2[p2]) p2++; if(total == p1+p2){ answer = "No"; break; } } return answer; }
Java
class Solution { public String solution(String[] cards1, String[] cards2, String[] goal) { String answer = "Yes"; int pos1 = 0, pos2 = 0; for (String s : goal) { int total = pos1+pos2; if(cards1.length > pos1 && s.equals(cards1[pos1])) pos1++; else if(cards2.length > pos2 && s.equals(cards2[pos2])) pos2++; if(total == pos1+pos2) return "No"; } return answer; } }
'알고리즘 > 프로그래머스' 카테고리의 다른 글
Programers 대충 만든 자판/ C++, JAVA (0) 2023.03.04 Programers 연속 펄스 부분 수열의 합/ C++ (0) 2023.03.04 Programers 미로 탈출/ C++ (0) 2023.02.19 2023 카카오 블라인드 코딩테스트 4번 표현 가능한 이진트리 / C++ (0) 2023.02.18 2023 카카오 블라인드 코딩테스트 6번 미로 탈출 명령어 / C++ (0) 2023.02.18 댓글