스킬트리

NJW·2022년 3월 13일
0

코테

목록 보기
15/170

들어가는 말

skill에 있는 알파벳 순서대로 skill_trees에 존재하느지 알아보는 문제이다. skill은 string으로 skill_trees는 string형 벡터로 주어진다. 이 문제에서 안 것은 skill_trees[i][j]일 때 skill_trees에 있는 i번째 단어의 j번째 문자라는 것이다. 그리고 문자열에서 find를 하면 위치(정수)가 반환된다.

코드 설명

처음에는 벡터인 skill_trees만큼 반복문을 돌려준다. 다음 skill에 있는 문자가 들어갈 다른 벡터를 정의한다. 두 번째 반복문은 skill_trees에 있는 단어의 문자 수 만큼이다. 해당되는 문자를 num(skill_trees에 해당하는 단어의 문자의 위치)에 넣고 만일 num이 존재하지 않는다면 continue를 존재한다면 그 위치의 문자를 v에 넣어준다. 단어 하나를 전부 검사하면 v의 순서와 skill의 순서를 비교해서 만일 다를 경우 a를 1로 바꿔준다(한 번이라도 다를 경우 틀린 것이므로 if문 안에 break를 넣어줬다). a가 1이 아니라면 answer에 +1을 해준다. skill_trees에 있는 단어를 모두 돌린 뒤 answer을 리턴한다.

코드

#include <string>
#include <vector>
#include <iostream>

using namespace std;

int solution(string skill, vector<string> skill_trees) {
    int answer = 0;
    int num;
    int a;
    
    for(int i=0; i<skill_trees.size(); i++){
        vector<int> v;
        for(int j=0; j<skill_trees[i].size(); j++){
            num = skill.find(skill_trees[i][j]);
            if(num == string::npos){
                continue;
            }else{
                v.push_back(skill_trees[i][j]);
            }
        }
        a = 0;
        for(int k=0; k<v.size(); k++){
            if(skill[k] != v[k]){
                a = 1;
                break;
            }
        }
        
        if(a != 1){
            answer++;
        }

    }
    
    return answer;
}

참고

https://bkkang89.tistory.com/6
https://kis6473.tistory.com/65

string::find()
https://lollolzkk.tistory.com/12

profile
https://jiwonna52.tistory.com/

0개의 댓글