https://programmers.co.kr/learn/courses/30/lessons/49993
문제 파악
유저들이 만든 스킬 트리가 선행 스킬에 맞는 스킬 트리인지 판단하고 개수를 RETURN 해주면 된다.
문제를 푸는 아이디어는 주어진 스킬트리에서 선행 스킬이 아닌 문자를 ReplaceAll로 제거하고 그 문자에서 선행 스킬의 IndexOf가 0이 아니라면 제거해주는 식 (선행 스킬의 순서와 맞지 않음)으로 풀었다.
처음 통과한 소스
더보기
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees)
{
int answer = 0;
int loop = skill_trees.length;
for(int idx =0; idx<loop;idx++)
{
// 선행 스킬 순서가 없으면 아무렇게나 배워도 상관 없음
if(skill.length() == 0){
answer++;
}
else
{
String str = "";
int len = skill_trees[idx].length();
for(int r = 0; r <len;r++ )
{
char c = skill_trees[idx].charAt(r);
if(skill.indexOf(c)!=-1){
str+= c+"";
}
}
String regex = skill.substring(0,str.length());
if(str.indexOf(regex)!=-1){
answer++;
}
}
}
return answer;
}
}
두 번째로 통과한 소스
더보기
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees)
{
int answer = 0;
ArrayList<String> list = new ArrayList<>(Arrays.asList(skill_trees));
Iterator<String> it = list.iterator();
while(it.hasNext())
{
String str = it.next().replaceAll("[^"+skill+"]","");
if(skill.indexOf(str)!=0){
it.remove();
}
}
answer = list.size();
return answer;
}
}
'PS' 카테고리의 다른 글
[Programmers] LV2 - 이진 변환 반복하기 (0) | 2021.06.26 |
---|---|
[Programmers]LV2 - 뉴스 클러스터링 (0) | 2021.06.26 |
[BOJ] 1022번: 소용돌이 예쁘게 출력하기 (0) | 2021.06.23 |
[Programmers] LV2- 프렌즈4블록 (0) | 2021.06.22 |
[BOJ]2638번 : 치즈 (0) | 2021.06.22 |