본문 바로가기
Algorithm/Programmers

[Summer/winter Coding ~ (2018)] 스킬트리

by neohtux 2020. 8. 7.
728x90

https://programmers.co.kr/learn/courses/30/lessons/49993

 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr

 

(풀이)

1. Skill의 우선순위를 정한다.

2. Skill_trees 각 String원소들이 우선순위에 맞는지 확인한다.

 

#include<iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;


map<char, int> _map;

void check_priority(string skill);
bool IsGetSkill(string spell);
int solution(string skill, vector<string> skill_trees) {

	int answer = 0;
	check_priority(skill);
	for (int i = 0; i < skill_trees.size(); ++i)
	{
		if (IsGetSkill(skill_trees[i]))
			answer += 1;
	}
	return answer;
}
bool IsGetSkill(string spell)
{
	int priority = 1;
	for (int i = 0; i < spell.size(); ++i)
	{
		if (_map.find(spell[i]) != _map.end())
		{
			if (_map[spell[i]] > priority) 
				return false;

			priority += 1;
		}
	}
	return true;
}
void check_priority(string skill)
{
	int value = 1;
	for (int i = 0; i < skill.size(); ++i)
	{
		_map[skill[i]] = value;
		value += 1;
	}
}
300x250

댓글