알맹이방
[프로그래머스] 스킬트리 - java 본문
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = skill_trees.length;
int beforeIndex=0, currentIndex =0 ;
for(int i = 0; i <skill_trees.length ; i++){
beforeIndex = skill_trees[i].indexOf(skill.charAt(0));
for(int j = 1; j<skill.length();j++){
currentIndex = skill_trees[i].indexOf(skill.charAt(j));
if((currentIndex!=-1 && beforeIndex>currentIndex)||(currentIndex!=-1&&beforeIndex==-1)){
answer--;
break;
}
beforeIndex=currentIndex;
}
}
return answer;
}
}
코드가 계속 복잡해지는 느낌이 들어서 다른 코드를 보고 참고했다. 오래 걸려 푸는 것도 안 좋다 해서 다른 분의 코드를 보고 바로 이해했다.
<참고한 코드>
https://blog.naver.com/yongyos/221572139348
아래는 실패했지만 코드 도출과정들. (역순)
import java.util.ArrayList;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
//main idea : C앞에 B와 D가 없으면, B앞에 D가 없으면 가능
ArrayList<String> skills = new ArrayList<>();
for(int j =0; j<skill.length(); j++){
skills.add(Character.toString(skill.charAt(j))); //toString 해주는 이유는 contains 함수 사용위해
}
for(int i =0 ; i<skill_trees.length; i++){ //i는 스킬트리의 단어 하나하나 체크
System.out.println("현재의 단어 : "+skill_trees[i]);
ArrayList<Integer> indexNum = new ArrayList<>();
boolean flag = false;
for(int k = 0 ; k<skills.size(); k++){ //k는 skill 하나하나
if(skill_trees[i].contains(skills.get(k))){ //contains는 String은 String만 비교
int num = skill_trees[i].indexOf(skills.get(k));
System.out.println(num);
for(int q = 0 ; q<num ; q++){
if(Character.toString(skill_trees[i].charAt(q)).equals(skills.get(k+1))){
flag=true;
System.out.println(skill_trees[i].charAt(q)+" 발견");
break;
}
}
if(flag==true)
break;
}
break;
}
if(flag==false)
answer++;
System.out.println("현재의 answer : "+answer);
}
return answer;
}
}
import java.util.ArrayList;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
//main idea : C앞에 B와 D가 없으면, B앞에 D가 없으면 가능
ArrayList<String> skills = new ArrayList<>();
for(int j =0; j<skill.length(); j++){
skills.add(Character.toString(skill.charAt(j))); //toString 해주는 이유는 contains 함수 사용위해
}
for(int i =0 ; i<skill_trees.length; i++){ //스킬트리의 단어 하나하나 체크
System.out.println(skill_trees[i]);
ArrayList<Integer> indexNum = new ArrayList<>();
for(int k = 0 ; k<skills.size(); k++){
if(skill_trees[i].contains(skills.get(k))){ //contains는 String은 String만 비교됨
indexNum.add(skill_trees[i].indexOf(skills.get(k)));
}
}
// System.out.println(indexNum);
// for(int q = 0; q<indexNum.size(); q++){
// if(q==indexNum.size()-1){
// answer++;
// break;
// }
// if(indexNum.get(q)>indexNum.get(q+1)||){
// System.out.println("스킬트리오류");
// break;
// }
// }
System.out.println(answer);
}
return answer;
}
}
import java.util.ArrayList;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
//main idea : C앞에 B와 D가 없으면, B앞에 D가 없으면 가능
ArrayList<String> skills = new ArrayList<>();
for(int j =0; j<skill.length(); j++){
skills.add(Character.toString(skill.charAt(j)));
}
for(int i =0 ; i<skill_trees.length; i++){ //스킬트리의 단어 하나하나 체크
int num = 0;
System.out.println(skill_trees[i]);
for(int k = 0 ; k<skills.size(); k++){
if(skill_trees[i].contains(skills.get(k))){
System.out.println(skills.get(k)+"포함");
}
else
System.out.println(skills.get(k)+"불포함");
}
}
return answer;
}
}
import java.util.ArrayList;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
//main idea : C앞에 B와 D가 없으면, B앞에 D가 없으면 가능
ArrayList<Character> skills = new ArrayList<>();
for(int j =0; j<skill.length(); j++){
skills.add(skill.charAt(j));
}
for(int i =0 ; i<skill_trees.length; i++){
System.out.println(skill_tress[i]);
}
return answer;
}
}
'알고리즘 > [2020] 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT 문자열압축 - java (0) | 2020.05.16 |
---|---|
[프로그래머스] 큰 수 만들기 - java (0) | 2020.05.10 |
[프로그래머스] 124 나라의 숫자 - java (0) | 2020.04.20 |
[프로그래머스] 기능개발 - java (0) | 2020.04.20 |
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 캐시 - java (0) | 2020.04.17 |
Comments