SIU
article thumbnail

문제

https://school.programmers.co.kr/learn/courses/30/lessons/49993

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

깃허브

https://github.com/Seongho0503/Algo_Study/blob/main/Week18/PGS_LV2_49993_%EC%8A%A4%ED%82%AC%ED%8A%B8%EB%A6%AC/0414%20%EA%B6%8C%EC%84%B1%ED%98%B8.md

 

GitHub - Seongho0503/Algo_Study: 코딩테스트 대비 알고리즘 및 CS 스터디입니다.

코딩테스트 대비 알고리즘 및 CS 스터디입니다. Contribute to Seongho0503/Algo_Study development by creating an account on GitHub.

github.com

 

 

접근법

- 문자열과 배열의 활용 문제
1) 사람들의 skill_tree에서 스킬북에 적힌 스킬을 제외한 요소를 제외시킨 뒤
2) 길이를 똑같게 맞춘 뒤 일치하는지 비교한다 
3) 일치하면 개수 증가

 

 

배열.includes(원소) 

- 기본적으로 배열.includes(원소)는 true, false을 반환

- 해당 원소가 배열에 있으면 true, 없으면 false 반환

 

map에서 includes true, false 반환

        let magic = skill_trees[i].split("").map(e => sk.includes(e));
        console.log(magic) 	[ true, false, true, true, false ]

 

filter에서 includes 만족하는(true) 원소 반환

  let magic = skill_trees[i].split("").filter(e => sk.includes(e));
  // [ 'B', 'C', 'D' ]

 

 

문자열 자르기

문자열.substring(시작점, 길이)

https://gent.tistory.com/414

 

[JavaScript] 문자열 자르기 (substr, substring, slice)

자바스크립트에서 문자열을 자르기 위해서는 substr(), substring(), slice() 함수를 사용하면 된다. 문자열을 뒤에서부터 자르기 위해서는 slice() 함수를 사용하면 효율적이며 타 언어의 Right 함수와 비

gent.tistory.com

 

배열.join("")

배열을 문자열로 바꿔준다.

let arr2 = [2,3,4]
return arr2.join(""); // 234

 

전체 코드

function solution(skill, skill_trees) {
    // 문자열을 배열로
    let newArr = skill.split("");
    //console.log(newArr); 	[ 'C', 'B', 'D' ]
    let str = 0;
    let count = 0;
    for(let i = 0; i < skill_trees.length; i++){
        //newArr이 포함하는 문자인 것들만(true) 반환 => join("")을 이것을 다시 문자열로 반환
        str = skill_trees[i].split("").filter(e => newArr.includes(e)).join("");
        //console.log(str) 아래 주석 참고
        // 정답인 skill 만큼 길이를 자르고 비교 => 같으면 개수 증가
        if(str === skill.substring(0, str.length)){
            count++;
        }
    }
    return count; 
}

// newArr이 포함하는 문자인 것들만(true) 반환 => join("")을 이것을 다시 문자열로 반환
// str = skill_trees[i].split("").filter(e => newArr.includes(e))
// [ 'B', 'C', 'D' ]
// [ 'C', 'B', 'D' ]
// [ 'C', 'B' ]
// [ 'B', 'D' ]

// console.log(skill_trees[i].split(" "))
// [ 'BACDE' ]
// [ 'CBADF' ]
// [ 'AECB' ]
// [ 'BDA' ]

// console.log(skill_trees[i].split(""))
// [ 'B', 'A', 'C', 'D', 'E' ]
// [ 'C', 'B', 'A', 'D', 'F' ]
// [ 'A', 'E', 'C', 'B' ]
// [ 'B', 'D', 'A' ]

profile

SIU

@웹 개발자 SIU

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!