Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

코딩응급실

프로그래머스: 스킬트리 본문

Java

프로그래머스: 스킬트리

Daeryuk Kim 2024. 3. 20. 00:55
import java.util.*;

class Solution {
    public int solution(String skill, String[] skill_trees) {
        int answer = 0; // 가능한 스킬트리의 개수를 저장할 변수

        for (String skillTree : skill_trees) { // 스킬트리 배열을 순회
            boolean isValid = true; // 현재 스킬트리가 유효한지 여부를 저장할 변수
            int lastSkillIndex = -1; // 마지막으로 발견된 선행 스킬의 인덱스

            for (int i = 0; i < skillTree.length(); i++) { // 현재 스킬트리의 각 스킬을 순회
                int index = skill.indexOf(skillTree.charAt(i)); // 현재 스킬이 선행 스킬 순서에서의 위치

                // 선행 스킬 순서에 존재하지 않는 스킬인 경우, 무시하고 계속 진행
                if (index == -1) continue;

                // 선행 스킬 순서에 따라 현재 스킬을 배울 수 없는 경우
                if (index > lastSkillIndex + 1) {
                    isValid = false; // 유효하지 않은 스킬트리로 판별
                    break; // 더 이상 검사할 필요가 없으므로 반복문 탈출
                }

                lastSkillIndex = index; // 마지막으로 발견된 선행 스킬의 인덱스를 갱신
            }

            if (isValid) { // 모든 검사를 마친 후 현재 스킬트리가 유효하다면
                answer++; // 가능한 스킬트리의 개수를 증가
            }
        }

        return answer; // 가능한 스킬트리의 총 개수를 반환
    }

    public static void main(String[] args) {
        Solution sol = new Solution();
        String skill = "CBD";
        String[] skill_trees = {"BACDE", "CBADF", "AECB", "BDA"};
        int result = sol.solution(skill, skill_trees);
        System.out.println(result); // 결과 출력, 예상 값: 2
    }
}

'Java' 카테고리의 다른 글

프로그래머스: 오픈채팅방  (0) 2024.03.20
프로그래머스: 롤케이크 자르기  (0) 2024.03.20
프로그래머스: 땅따먹기  (0) 2024.03.20
프로그래머스: 주식가격  (0) 2024.03.19
프로그래머스: [3차] n진수 게임  (1) 2024.03.17