상세 컨텐츠

본문 제목

99클럽 코테 스터디 8일차 TIL : 카드 뭉치

코테준비/하루한개도전~

by 움바둠바 2024. 8. 1. 13:10

본문

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/159994

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

뭐지?? 너무 간단한데... 이게 맞나...


이 문제는 조건이 달려있어서 아주 쉽게 풀수가 있었다.

순서도 보장되고, 뛰어넘기도 안된다면!!

=> 그냥 순서대로 비교해보면서, 전부 통과하면 만들 수 있는거고, 중간에 걸리면?? 그냥 바로 NO 해버리면 된다.

만약 순서제한이라던지, 여러번사용가능과 같은 조건이 있었으면 조금 더 복잡하게 만들어야 했을것같고

반복문이 중첩되어 효율적인 방법을 생각해봐야했을것이다.

 

#include <string>
#include <vector>

using namespace std;

string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) {
    string answer = "";
    int n1 = cards1.size();
    int n2 = cards2.size();
    
    int i1 = 0;
    int i2 = 0;
    for(int i = 0; i<goal.size(); i++){
        if(i1 < n1 &&(!cards1[i1].compare(goal[i]))){
            i1++;
            continue;
        }
        if(i2 < n2 && (!cards2[i2].compare(goal[i]))){
            i2++;
            continue;
        }
        return "No";
    }
    
    return "Yes";
}

다음과같이 card1, card2를 위한 index를 만들어주고, 반복문은 goal에 대해서 돌리면 된다.

if문 두개에 걸려서 cotinue로 안넘어가면, 지금순서 카드로는 만들 수 없는거니까 바로 NO가 된다.

반복문을 전부다 무사히 통과했다는것은, 모든 if문을 한번씩 걸려왔다는 것이니까 Yes가 된다.

 

별다른 자료구조를 추가하지 않고도 해결가능한 문제였다.

저런식으로 index로 접근하는게 더 효율적인것,, 맞겠지? 내생각은 그렇다..ㅎㅎ

728x90

관련글 더보기