코드
class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.solution("CBD", new String[]{"BACDE", "CBADF", "AECB", "BDA"}));
System.out.println("================================");
}
public int solution(String skill, String[] skill_trees) {
int answer = 0;
for (String skillTree : skill_trees) {
System.out.println("skillTree = " + skillTree);
int skillIndex = 0;
boolean isPossible = true;
for (int i = 0; i < skillTree.length(); i++) {
int skillOrder = skill.indexOf(skillTree.charAt(i));
//필수 스킬트리에 존재하는 스킬인지 확인
// -1 이라면 필수 스킬트리에 존재하지 않는 스킬이기에 자유롭게 배울 수 있는 스킬
if (skillOrder == -1) {
continue;
}
//하지만 필수 스킬트리에 존재하는 스킬이라면
// 지금 진행중인 skillIndex 와 동일해야 정상적인 스킬트리를 진행중임을 알 수 있다.
if (skillOrder == skillIndex) {
skillIndex++;
} else {
//만약 스킬트리와 동일하지 않은 인덱스에 위치한다면 불가능한 스킬트리이다.
isPossible = false;
break;
}
}
//만약 isPossible 이 true 라면 정상적인 스킬트리이다.
if (isPossible) {
answer++;
}
}
return answer;
}
}
링크
문제 설명
선행 스킬 순서가 주어지며, 사용자가 만든 스킬트리 배열이 주어지는 경우
가능한 스킬트리의 개수를 반환하는 문제
제한조건
스킬은 알파벳 대문자로만 이루어져 있습니다.
스킬 순서와 스킬트리는 문자열로 표기합니다.
선행 스킬 순서 skill의 길이는 1 이상 26 이하입니다.
skill_trees는 길이 1 이상 20 이하인 배열입니다.
skill_trees의 각 원소는 길이가 2 이상 26 이하인 문자열입니다.
변수설명
- answer 변수
- 가능한 스킬트리의 개수를 세기 위해 사용됩니다.
- skill_trees 배열
- 각 스킬트리에 대해 반복문을 실행하여 각 스킬트리가 선행 스킬 순서를 따르는지 확인합니다.
- skill.indexOf(skillTree.charAt(i))
- 현재 스킬이 선행 스킬 순서에 있는지, 그리고 올바른 순서인지 확인합니다.
- 즉,
- skill → 선행스킬
- skillTree.charAt(i) → 해당 스킬배열의 문자 첫번째부터 쭉쭉
- skillTree 의 필수 스킬트리의 순서는 선행스킬 skill 의 순서와 동일해야함
- 모든 스킬이 올바른 순서로 배워졌다면, answer를 증가시켜 가능한 스킬트리의 개수를 업데이트합니다.
- 최종적으로 answer를 반환하여 가능한 스킬트리의 총 개수를 제공합니다.
그냥 단순한 구현문제였던거같다.
Uploaded by N2T
'자바 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 영어 끝말잇기 (0) | 2023.12.22 |
---|---|
[알고리즘] PCCP 기출 문제 2번 Java (0) | 2023.12.19 |
[알고리즘] 친구 (0) | 2023.10.02 |
[알고리즘]두 원 사이의 정수쌍 (0) | 2023.10.01 |
[알고리즘] 요격 시스템 (0) | 2023.09.25 |