https://school.programmers.co.kr/learn/courses/30/lessons/49993#fn1
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
char[] chars = skill.toCharArray();
List<Character> skillList = new ArrayList<>();
for(Character c : chars) {
skillList.add(c);
}
for(String skill_tree : skill_trees) {
int idx = 0;
boolean isUse = true;
for(int i = 0; i < skill_tree.length() && idx < skill.length(); i ++) {
if(skill_tree.charAt(i) == skill.charAt(idx)) {
idx++;
isUse = true;
}
else {
if(skillList.contains(skill_tree.charAt(i))) {
isUse = false;
break;
}
}
}
if(isUse) answer++;
}
return answer;
}
}
문제 풀이
1. 스킬을 순서대로 찍어야 하므로 따로 skill의 인덱스를 설정해주었다. idx = 0
2. 순서대로 찍을 수 있는 스킬들은 제외하고 스킬의 순서가 처음 인덱스부터 시작하지 않으면 isUse = false로 만든다.(서순에 맞게 스킬을 찍지 않으면)
'자료구조 & 알고리즘 관련 > 코딩테스트' 카테고리의 다른 글
구명보트 (0) | 2023.01.23 |
---|---|
카펫 (0) | 2023.01.21 |
귤 고르기 (0) | 2023.01.02 |
N진수 게임 문제 (자바) (0) | 2022.12.28 |
최대공약수 최소공배수 (0) | 2022.12.24 |