프로그래머스 level2 ) 스킬트리

하우르·2021년 7월 7일
0

링크 : 프로그래머스 level2 ) 스킬트리

풀이

예전에 풀다가 실패한 문제
요번에 다시 풀어봤다.

내가 생각한 방법은

1. 스킬순서가 될수있는 루트를 hashSet에 저장

ex) " CBD "
-> "C" "CB" "CBD"

2. 스킬순서에 있는 알파벳을 제외하고 스킬트리에서 지우기

ex) " BACDE "
-> "BCD"

3. hashSet에 그 순서가 있는지 확인

※주의할점

처음에 3,4개 정도만 맞고 틀렸었다.
그 이유는 스킬순서에 있는 알파벳이 아예없는 스킬트리도 존재 할수있다.
그런 스킬트리 또한 정답이다.

import java.util.HashSet;
class Solution {
    public int solution(String skill, String[] skill_trees) {
       String pattern = "[^";
		HashSet<String> skills_map = new HashSet<String>();
		for(int i=0; i<skill.length(); i++)
		{
			pattern+=skill.substring(i, i+1);
			skills_map.add(skill.substring(0,i+1));
		}
		pattern+="]";
		int answer=0;
		for(int i=0; i<skill_trees.length; i++)
		{
			String s=skill_trees[i].replaceAll(pattern, "");
			if(skills_map.contains(s))
				answer++;
            else if(s.equals(""))
				answer++;
		}
        return answer;
    }
}
profile
주니어 개발자

0개의 댓글

관련 채용 정보