알고리즘/프로그래머스
Programers 카드 뭉치 / C++, Java
내이름은 킹햄찌
2023. 2. 19. 21:14
https://school.programmers.co.kr/learn/courses/30/lessons/159994?language=cpp
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
아이디어
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;
}
}