https://programmers.co.kr/learn/courses/30/lessons/49993
Others
function solution(skill, skill_trees) {
var answer = 0;
var newArr = skill.split("");
var str = 0;
for(var i=0;i<skill_trees.length;i++){
str = skill_trees[i].split("").filter(element => newArr.includes(element)).join("");
//순서를 지켜야 함 -> substr 경우의 수가 한정적.
//이 부분을 생각못함.
if(str === skill.substring(0,str.length)){
answer++;
}
}
return answer;
}
Me...(일부 성공 일부 실패) -> WHY?
=> 접근방법자체가 틀림..ㅠㅠ
function solution(skill, skill_trees) {
var answer = 0;
//skill각 문자의 인덱스를 찾아서 오름차순인지 확인
var skillArr = skill.split('');
for (var i =0; i<skill_trees.length; i++) {
var temp = [];
var count = 0;
for (var j = 0; j < skill.length; j++) {
temp.push(skill_trees[i].split('').findIndex(str => str === skillArr[j]));
}
// console.log(temp);
if (temp[temp.length - 1] === -1) {
temp.pop();
}
console.log(temp);
// index 비교 -> 오름차순일 경우만 count
// index -1인 경우는 무시 -> 가 아니라 맨 뒤만 -1가능
if(temp.some(el=> el ===-1)){
answer = answer;
} else {
for (var k = 1; k < temp.length; k++) {
var first = temp[k-1];
var count = 0;
if (temp.slice(k).some(el => temp[k-1] > el)){ //이것도 안돼 -> 5896
count = count+1;
}
}
if (count === 0 ){
answer=answer+1; console.log(answer);
}
}
}
return answer;
}
나는 너무 복잡하게 생각함.
코딩을 하기 전에 알고리즘 자체를 최대한 단순화해보기.
문자열의 비교!!