https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
나의 풀이
- goal에 있는 단어를 cards1과 cards2의 첫번째 글자와 각각 비교한다.
- 비교했을 때 둘 다 없으면 No를 바로 반환해버린다.
- 있으면 있는 쪽의 0번째 단어를 삭제한다.
이렇게 비교하면 순차적으로 비교할 수 있으면서 깔끔하게 코드를 작성할 수 있을 것 같아 이렇게 로직을 설계하였다.
내 코드
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
string solution(vector<string> cards1, vector<string> cards2, vector<string> goal) {
for (int i = 0; i < goal.size(); i++)
{
if (cards1.size() > 0 && goal[i] == cards1[0])
cards1.erase(remove(cards1.begin(), cards1.end(), goal[i]));
else if (cards2.size() > 0 && goal[i] == cards2[0])
cards2.erase(remove(cards2.begin(), cards2.end(), goal[i]));
else
return "No";
}
return "Yes";
}
remove와 erase를 같이 쓴 이유
remove와 erase를 다룬 게시물 첨부 예정
'코딩테스트 준비' 카테고리의 다른 글
[ C++ ] 프로그래머스 체육복 (0) | 2025.03.13 |
---|---|
[ C++ ] 프로그래머스 로또의 최고 순위와 최저 순위 (0) | 2025.02.19 |
[C++] 프로그래머스 3진법 뒤집기 (0) | 2025.01.16 |
[C++] 프로그래머스 자릿수 더하기 (0) | 2024.12.26 |
코딩테스트 공부 순서 (3) | 2024.10.22 |