
🧫 문제 분석
✔️ 출처
📖 문제

skill 매개변수에는 스킬 순서가 담겨있고
skill_trees는 각 스킬트리들이 담겨있다.
여기서 핵심은 스킬순서에 있는 모든 스킬이 다 스킬트리에 있을 필요 없고 스킬 순서만 맞으면 가능한 스킬트리라는 것이다.
🔅 문제 풀이
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
HashMap<Character, Integer> map = new HashMap<>();
int answer = 0, rightSequence = 0;
// 맵 초기화
for (int i = 0; i < skill.length(); i++) {
map.put(skill.charAt(i), i);
}
// 각 스킬트리의 스킬 순서를 검증
for (int i = 0; i < skill_trees.length; i++) {
boolean flag = true;
rightSequence = 0;
for (int j = 0; j < skill_trees[i].length(); j++) {
char skillName = skill_trees[i].charAt(j);
int currentSkill = map.getOrDefault(skillName, -1);
// 스킬순서에 없는 것은 넘긴다.
if (currentSkill == -1) {
continue;
// 스킬순서에 어긋나면 정상 스킬순서를 0으로, flag를 false로 하고
// 해당 스킬트리 반복문을 멈춘다.
} else if (rightSequence != currentSkill) {
rightSequence = 0;
flag = false;
break;
}
rightSequence++;
}
// 스킬순서가 정상적이면 answer++
if (flag) answer++;
}
return answer;
}
}

처음에는 스킬순서에 있는 모든 스킬이 있어야하는 줄알아서 잘못짰었다.
그 다음에 정규표현식으로 replaceAll 할라했는데 변수를 어떻게 할지 몰라서 넘겼다가 알게되었는데
"[^" + 변수 + "]" 이렇게 하면 되는 거였다. 기억하자
다른 사람 풀이를 보니 나랑 비슷한데 배열만 써서 나보다 3배 빠르다. 역시 배열이 최고다..
❗ 오답노트 / 필요한 지식
- 모든 문제는 배열로 처리할 수 있다.
- 정규표현식 "[^" + 변수 + "]" 이런식으로 하면 변수 사용 가능
- 문제좀 잘 읽자;
'programmers > Lv 2' 카테고리의 다른 글
두 원 사이의 정수 쌍 [자바] (0) | 2025.01.03 |
---|---|
요격 시스템 [자바] (2) | 2024.12.30 |
행렬의 곱셈 (0) | 2024.06.27 |
n^2 배열 자르기 (0) | 2024.06.27 |
H-Index (0) | 2024.06.27 |