https://school.programmers.co.kr/learn/courses/30/lessons/49993
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
큐 사용
#include <string>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
//skill을 큐 사용.
//skill_trees 원소 for문 탐색
// q.top();
// q.pop();
//해당 tree원소가 skill과 같다면
// q.push 후 다음 target skill로 갱신.
// 그렇지 않으면
// 해당 원소가 skill에 있는지 체크, 있다면 flag = false처리 후 break;
//
// 2중 루프에서 1중루프로 빠진 후 flag == true 시 answer++;
int solution(string skill, vector<string> skill_trees) {
int answer = 0;
queue<char>q;
for(int idx = 0; idx < skill.size();++idx){
q.push(skill[idx]);
}
for(int y = 0; y < skill_trees.size(); ++y){
queue<char> tmp = q;
char tar = tmp.front();
tmp.pop();
bool flag = true;
//skill_trees 원소 for문 탐색
for(int x =0 ; x < skill_trees[y].size(); ++x){
//해당 tree원소가 skill과 같다면
if(tar == skill_trees[y][x]){
// q.push 후 다음 target skill로 갱신.
tmp.push(tar);
tar = tmp.front();
tmp.pop();
}
else{
// 해당 원소가 skill에 있는지 체크, 있다면 flag = false처리 후 break;
auto n = skill.find(skill_trees[y][x]);
if (std::string::npos != n){
flag = false;
// cout<<tar<<" "<< y<<" " <<x<<endl;
break;
}
}
}
if(flag) answer++;
}
return answer;
}'프로그래머스 > 코딩테스트' 카테고리의 다른 글
| lv4) 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 [틀림, 다시] (0) | 2026.05.27 |
|---|---|
| lv2) 영어 끝말잇기 (0) | 2026.05.26 |
| lv2) 요격시스템 (0) | 2026.05.25 |
| lv 2) 구명 보트 (with 투포인터, 슬라이딩 윈도우 활용 용도) [다시] (0) | 2026.05.24 |
| lv2) 퍼즐 게임 챌린지[] (0) | 2026.05.23 |
