최대 1 분 소요

[프로그래머스] 스킬트리

문제 링크

#include "header.h"
using namespace std;
map <char, int> m;
int solution(string skill, vector<string> skill_trees) {
    int answer = 0;
    int idx = 0;

    for(int i=0; i<skill.size(); i++) {
        skill[i] = toupper(skill[i]);
        m[skill[i]]++;
    }

    for(int i=0; i<skill_trees.size(); i++){
        idx = 0;
        int flag = 1;
        for(int j=0; j<skill_trees[i].size(); j++){
            if(m[skill_trees[i][j]]){ //스킬트리에 존재하는 스킬이라면
                if(skill_trees[i][j] != skill[idx]){ //순서가 안맞으면
                    flag = 0;
                    break;
                }else{
                    idx++;
                }
            }
        }
        if(flag) answer++;
    }

    return answer;
}
  • 스킬트리를 대문자로 초기화 해주고, 맵에 저장한다.
  • 맵으로 스킬트리에 존재하는 스킬인지 확인을 하고,
  • 존재한다면 순서가 맞는지 확인한다.
  • 순서가 안맞으면 flag를 false로 변경 후 break 해 준다.
  • 아니라면 스킬트리의 인덱스를 +1 해 준다.
  • flag가 true 인 경우에만 ans++ 해 준다.

카테고리:

업데이트: