코딩테스트
[JAVA] 프로그래머스 스킬 트리
mingg123
2021. 4. 17. 16:49
programmers.co.kr/learn/courses/30/lessons/49993
코딩테스트 연습 - 스킬트리
programmers.co.kr
1차 시도 (실패)
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
String [] skillArray = skill.split("");
for(int i = 0; i < skill_trees.length; i++) {
boolean flag = true;
boolean realflag = true;
int idx = 0;
for(int j = 0; j < skillArray.length; j++) {
String targetStr = skillArray[j];
String [] tempSkillTreeArray = skill_trees[i].split("");
for(int z = 0 ; z < tempSkillTreeArray.length; z++) {
//처음 문자가 배열에 존재하지 않는경우
if(j == 0 && z == tempSkillTreeArray.length -1 && !targetStr.equals(tempSkillTreeArray[z])) {
realflag = false;
}
else if(targetStr.equals(tempSkillTreeArray[z])) {
if(flag == false) {realflag = false;}
if(idx == 0) {
idx = z;
break;
} else {
if(idx < z ) {
idx = z;
break;
} else {
realflag = false;
break;
}
}
} else if(z == tempSkillTreeArray.length -1 && !targetStr.equals(tempSkillTreeArray)) {
flag = false;
}
}
}
if(realflag) answer ++;
}
return answer;
}
}
경우의 수를 처음 스킬을 배우지 않았으면 -> false 반환
배운 스킬의 인덱스를 찾고 인덱스가 더 작으면 스킬 배우는 순서에 맞지 않음으로 -> false반환
1차 코드 실패 이유 : 테스트 케이스 추가 시 잘못 입력함.. 살다살다 이런 이유도 있구나.
예를 들어 스킬은 "CB"이고 스킬 트리는 {"A", "D"} 이면 1을 반환해야하는데 0을 반환하도록 했다.
2차 코드 (성공)
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
String [] skillArray = skill.split("");
for(int i = 0; i < skill_trees.length; i++) {
boolean flag = true;
boolean realflag = true;
int idx = 0;
for(int j = 0; j < skillArray.length; j++) {
String targetStr = skillArray[j];
String [] tempSkillTreeArray = skill_trees[i].split("");
for(int z = 0 ; z < tempSkillTreeArray.length; z++) {
if(targetStr.equals(tempSkillTreeArray[z])) {
if(flag == false ) {realflag = false;}
if(idx == 0) {
idx = z;
break;
} else {
if(idx < z ) {
idx = z;
break;
} else {
realflag = false;
break;
}
}
} else if(z == tempSkillTreeArray.length -1 && !targetStr.equals(tempSkillTreeArray)) {
flag = false;
}
}
}
if(realflag) answer ++;
}
return answer;
}
}