250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++)스킬트리 본문
728x90
반응형
스킬 트리 문제..
우선 for문으로 skill_trees 에 들어가 있는 스킬 수 만큼 반복하자.
그리고 스킬의 인덱스를 체크하는 index 변수와 순서대로 스킬을 찍을 수 있는지 알 수 있는 cnt 변수,
스킬의 순서를 체크하는 before 반복자를 선언한다.
while문을 돌면서 순서에 맞게 찍을 수 있는지 체크하도록 하자.
우선 종료 조건으로 index가 스킬의 사이즈와 같다면 break를 걸어 탈출하도록 하였다.
아니라면 반복자 itr을 선언하여 skill_trees[i]에서 skill[index]의 위치를 찾아낸다.
만약 순서가 제대로 맞지 않는다면 즉, before 반복자가 itr 반복자보다 크다면
cnt를 0으로 만들고 탈출하도록 하였다.
순서대로 찍었다면 before 반복자는 itr 반복자보다 무조건적으로 작게 되니 index와 cnt를 ++해주고,
before를 itr로 바꾸어 현재 위치로 설정을 해놓는다.
while문을 탈출하여 cnt가 0보다 큰지 확인하고, 크면 answer++을 해주면 문제는 끝..!
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(string skill, vector<string> skill_trees) {
int answer = 0;
for(int i = 0; i < skill_trees.size(); i++)
{
int index = 0, cnt = 0;
auto before = skill_trees[i].begin();
while(1)
{
if(index == skill.size())
break;
auto itr = find(skill_trees[i].begin(), skill_trees[i].end(), skill[index]);
if(before <= itr)
{
index++;
cnt++;
before = itr;
}
else
{
cnt = 0;
break;
}
}
if(cnt > 0)
answer++;
}
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > 2단계' 카테고리의 다른 글
(프로그래머스 c++)큰 수 만들기 (0) | 2020.05.11 |
---|---|
(프로그래머스 c++)탑 (0) | 2020.05.06 |
(프로그래머스 c++)124 나라의 숫자 (0) | 2020.05.06 |
(프로그래머스 c++)기능개발 (0) | 2020.05.05 |
(프로그래머스 c++)프린터 (0) | 2020.05.04 |