728x90
코드 힌트
- 스킬 순서 이해:
- 주어진 skill 문자열은 스킬의 순서를 정의하며, 이 순서대로 스킬을 배워야만 합니다.
- 예를 들어, skill이 "CBA"라면, 스킬 트리에서 C가 먼저, B가 그다음, A가 마지막으로 와야 합니다.
- 필수 스킬 확인:
- 각 스킬 트리(skillTrees)에 대해 필수 스킬들이 올바른 순서로 나열되어 있는지 확인합니다.
- skill.indexOf(currentSkill)로 현재 스킬이 필수 스킬 목록에 있는지 확인합니다. 만약 포함되지 않았다면 무시합니다.
- 순서 확인:
- 만약 필수 스킬이 올바른 순서로 나타나지 않았다면, 해당 스킬 트리는 유효하지 않다고 판단합니다.
- 스킬 트리의 유효성을 판단한 후, 유효한 스킬 트리의 개수를 증가시킵니다.
- 결과 반환:
- 모든 스킬 트리를 확인한 후, 유효한 스킬 트리의 개수를 반환합니다.
정답은 더보기 클릭
더보기
class Solution {
public int solution(String skill, String[] skillTrees) {
int result = 0; // 올바른 스킬 트리 개수를 저장
for (String skillTree : skillTrees) {
int requiredSkillIndex = 0; // 다음으로 필요한 스킬의 인덱스
boolean isValid = true; // 스킬 트리가 유효한지 여부
for (int i = 0; i < skillTree.length(); i++) {
char currentSkill = skillTree.charAt(i);
int skillIndex = skill.indexOf(currentSkill);
// 현재 스킬이 필수 스킬에 포함되지 않는다면 무시
if (skillIndex == -1) continue;
// 필수 스킬이 올바른 순서대로 배치되었는지 확인
if (skillIndex == requiredSkillIndex) {
requiredSkillIndex++;
} else {
isValid = false;
break;
}
}
// 유효한 스킬 트리인 경우 카운트 증가
if (isValid) result++;
}
return result;
}
}
728x90
'프로그래머스(Java) > Level 2' 카테고리의 다른 글
[프로그래머스] 택배상자 (0) | 2024.08.23 |
---|---|
[프로그래머스] 주차 요금 계산 (0) | 2024.08.21 |
[프로그래머스] 땅따먹기 (0) | 2024.08.20 |
[프로그래머스] 방문 길이 (0) | 2024.08.20 |
[프로그래머스] 롤케이크 자르기 (0) | 2024.08.19 |