Search

스킬트리

알고리즘
연습문제
플랫폼
프로그래머스
JCF
상태
해결
생성 일시
2024/01/12 10:05
최종 편집 일시
2024/01/17 07:47

문제 설명

해결과정

Solution.java

import java.util.*; class Solution { public int solution(String skill, String[] skill_trees) { int answer = 0; int[] sequence = new int [skill.length()]; Arrays.fill(sequence, -1); printSkill(skill); for(String skill_tree : skill_trees) { skillSequence(skill_tree, skill, sequence); if(checkSequence(sequence)) { answer++; } // for(int num : sequence) { // System.out.print(num + " "); // } // System.out.println(); } return answer; } // 배열 확인 boolean checkSequence(int[] sequence) { boolean check = true; boolean isMinus = false; int previousSkill = -2; int currentSkill = 0; for(int num : sequence) { // 현재 스킬 입력 currentSkill = num; // 현재 스킬이 없다면 if(currentSkill == -1) { isMinus = true; } // 현재 스킬이 있다면 else { if(isMinus) { check = false; break; } else { // 이전 스킬보다 다음에 있다면 if(previousSkill > currentSkill) { check = false; break; } } } previousSkill = currentSkill; } return check; } // 스킬 트리 확인 int[] skillSequence(String skill_tree, String skill, int[] sequence) { String s = ""; // skill의 각 인덱스의 문자를 찾기 // 배열에다 스킬이 나타나는 인덱스를 넣었음 // 스킬이 없다면 -1 for(int i = 0; i < skill.length(); i++) { s = skill.charAt(i) + ""; sequence[i] = skill_tree.indexOf(s); } return sequence; } // skill 출력 void printSkill(String skill) { for(int i = 0; i < skill.length(); i++) { System.out.print(skill.charAt(i) + " "); } System.out.println(); } }
Java
복사