본문 바로가기

코딩 테스트/프로그래머스 코딩테스트

카드 뭉치

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

 

프로그래머스

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

programmers.co.kr

 

#include <bits/stdc++.h>

using namespace std;

string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) {
    string answer = "";
    
    int total_size = goal.size();
    int card1_size = 0;
    int card2_size = 0;
    
    for(int i=0; i<goal.size(); i++)
    {
        string check_str = goal[i];
        
        // card1에 포함되어 있는지 확인
        if(cards1[0] == check_str)
        {
            // stl vector pop_front method
            cards1.erase(cards1.begin());
            
            card1_size++;
        }
        // card2에 포함되어 있는지 확인
        if(cards2[0] == check_str)
        {
            // stl vector pop_front method
            cards2.erase(cards2.begin());
            
            card2_size++;
        }
                
        
    }
    
    if(total_size == (card1_size + card2_size))
    {
        answer = "Yes";
    }
    else
    {
        answer = "No";
    }
    
    cout << "answer = " << answer << endl;
    
    
    return answer;
}

 

오늘의 꿀팁!

 

1. C++ 코딩 테스트 문제 풀 때, 라이브러리 하나하나 include 하지말고 #include <bits/stdc++.h> 이거 하나만 하면 모든 함수가 커버 가능하다!

 

2. STL::vector 에서 제일 앞에 있는 데이터를 삭제하고 싶으면.. 즉, pop_front()를 구현하고 싶으면 아래와 같이 작성해보자.

 

erase()begin() 함수를 적절히 사용하면 pop_front() 함수를 구현할 수 있다!

std::vector<type> name = {,,,,};
name.erase(name.begin());

 

'코딩 테스트 > 프로그래머스 코딩테스트' 카테고리의 다른 글

달리기 경주  (0) 2024.05.18
둘만의 암호  (0) 2024.05.18
문자열을 정수로 바꾸기  (0) 2024.05.18
문자열 내 p와 y의 개수  (0) 2024.05.18
영어 끝말잇기  (0) 2022.11.29