728x90
SMALL
문제 이해
- 선행 스킬 순서 skill이 존재한다. skill_trees 의 순서들이 선행 스킬 순서에 맞게 배웠는지 확인한다.
- 선행 스킬을 베열로 저장하였다.
- 스킬트리의 문자열을 앞자리부터 비교한다. 배운 스킬이 선행 스킬에 순서에 맞는지 indexOf로 판단한다.
- 스킬 배우는 순서를 cnt에 입력하여 스킬트리의 배운 스킬의 순서와 맞는지 비교 그렇지 않다면 break로 내보낸다.
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
List<String> skillList = new ArrayList();
for(int i = 0; i<skill.length(); i++)
skillList.add(skill.substring(i, i+1));
for(String str : skill_trees){
int cnt = 0;
int check = 0;
for(int i = 0; i<str.length(); i++){
String tmp = str.substring(i, i+1);
if(skillList.indexOf(tmp) > cnt){
check = 1;
break;
}
if(skillList.indexOf(tmp) == cnt){
cnt++;
}
}
if(check == 0) answer++;
}
return answer;
}
}
다른 사람 풀이
- 스킬트리의 문자열을 스킬 문자열에 맞게 replaceAll 변형시켜서 indexOf가 존재하는지 비교한다.(정규표현식)
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
ArrayList<String> skillTrees = new ArrayList<String>(Arrays.asList(skill_trees));
//ArrayList<String> skillTrees = new ArrayList<String>();
Iterator<String> it = skillTrees.iterator();
while (it.hasNext()) {
if (skill.indexOf(it.next().replaceAll("[^" + skill + "]", "")) != 0) {
it.remove();
}
}
answer = skillTrees.size();
return answer;
}
}
728x90
LIST
'자바 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 정수 삼각형 - Java(자바) (0) | 2024.04.08 |
---|---|
[프로그래머스] 오픈채팅방 - Java(자바) (0) | 2024.04.02 |
[프로그래머스] 땅따먹기 - Java(자바) (0) | 2024.04.02 |
[프로그래머스] 방문 길이 - Java(자바) (1) | 2024.04.01 |
[프로그래머스] [3차] 압축 - Java(자바) (1) | 2024.03.29 |