Notice
Recent Posts
Recent Comments
Link
bdfgdfg
[레벨 2] 스킬트리 본문
반응형
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(string skill, vector<string> skill_trees) {
int answer = 0;
int skillLen = skill.size();
int userSkillLen = skill_trees.size();
int saveArr[26] = {0,};
vector<char> userSkill;
bool flag;
userSkill.reserve(skillLen);
for(int saveSkill = 0; saveSkill < skillLen; ++saveSkill)
saveArr[skill[saveSkill] - 'A'] = 1;
for(int find = 0; find < userSkillLen; ++find)
{
flag = true;
userSkill.resize(0);
int userSkillElement = skill_trees[find].size();
for(int cor = 0; cor < userSkillElement; ++cor)
{
char corElement = skill_trees[find][cor];
if(saveArr[corElement - 'A'] == 1)
userSkill.push_back(corElement);
}
for(int comp = 0; comp < userSkill.size(); ++comp)
{
if(skill[comp] != userSkill[comp])
flag = false;
}
if(flag)
++answer;
}
return answer;
}
처음에 문제를 잘못읽어 스킬의 요소들이 모두 유저스킬목록에 담겨있는줄 알고 큐를 이용해 풀었다.
하지만 유저스킬의 목록중 스킬트리의 모든 스킬이 나올 필요는 없고 그 순서만 중요한 것.
그렇기에 스킬의 순서가 문제를 푸는데 중요한 요소이므로 따로 알파벳 길이의 배열을 만들어 스킬트리의 스킬값들을 저장하고, 유저 스킬트리의 목록을 읽으면서 스킬트리의 스킬이 존재한다면 우선 userSkill 벡터에 집어넣은 후
그 순서가 맞는지 다시 스킬트리의 스킬순서와 비교.
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[레벨 2] 짝지어 제거하기 (0) | 2021.12.08 |
---|---|
[레벨 2] 가장 큰 정사각형 찾기 (0) | 2021.11.16 |
[레벨1] 실패율 (0) | 2021.11.12 |
[레벨 1] 다트찾기 (0) | 2021.11.02 |
[레벨 1 ] 최소직사각형 만들기 (0) | 2021.11.01 |
Comments