
-Code
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
// 스킬과 index를 저장
Map<Character, Integer> skillInfo = new HashMap<>();
for (int i = 0; i < skill.length(); i++) {
skillInfo.put(skill.charAt(i), i);
}
// 가능한 스킬 트리 확인
int answer = 0;
for (String skill_tree : skill_trees) {
if (isOk(skillInfo, skill_tree)) {
System.out.println(skill_tree);
answer++;
}
}
return answer;
}
private static boolean isOk(Map<Character, Integer> skillInfo, String skillTree) {
// 스킬 트리가 가능한지 확인
int idx = 0;
for (char sk : skillTree.toCharArray()) {
// 해당 스킬이 트리에 포함되는지 확인
if (skillInfo.containsKey(sk)) {
// 트리에 포함되나 다른 순서로 배우게 되면 false
if (skillInfo.get(sk) != idx) {
return false;
}
idx++;
}
}
return true;
}
}
처음에 idx를 이용해 설계는 맞았으나 스킬 트리를 반복적으로 배우는 조건이 있는 줄 알고 나머지 설계를 해서 틀렸습니다. 그래서 내가 잘못 이해한 건지 확인해 보니 가능한 스킬트리 1번만 존재하는 것임을 알고 나머지 연산을 지우니 해결됐습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [프로그래머스/Java] 택배상자 (0) | 2026.04.02 |
|---|---|
| [백준/Java] 15182번 Byte Me! (0) | 2026.04.02 |
| [백준/Java] 32437번 Fractions are better when continued (0) | 2026.04.01 |
| [프로그래머스/Java] [3차] n진수 게임 (0) | 2026.04.01 |
| [백준/Java] 2493번 탑 (0) | 2026.03.31 |