Lv.0 - 잘라서 배열로 저장하기_01.03

송철진·2023년 1월 3일
0

문제 설명

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ my_str의 길이 ≤ 100
1 ≤ n ≤ my_str의 길이
my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

입출력 예

my_strnresult
"abc1Addfggg4556b"6["abc1Ad", "dfggg4", "556b"]
"abcdef123"3["abc", "def", "123"]

나의 코드

function solution(my_str, n) {
    const arr = my_str.split("")
    for(let i = 1; i<my_str.length/n; i++){
        arr.splice(i*(n+1)-1,0,"-")
    }
    return arr.join("").split("-").filter(el => el !== "")
}

풀이

my_str을 문자 단위로 split()한 배열을 arr이라고 하고

const arr = my_str.split("")

// my_str = "abc1Addfgg"
// arr = ["a","b","c","1","A","d","d","f","g","g"]

arr의 index i*(n+1)-1에 "-"를 추가한다

for(let i = 1; i<my_str.length/n; i++){
    arr.splice(i*(n+1)-1,0,"-")
}

// n = 4

// i = 1일 때, i*(n+1)-1 = 1*(4+1)-1 = 4
// arr = ["a","b","c","1","-","A","d","d","f","g","g"]

// i = 2일 때, i*(n+1)-1 = 2*(4+1)-1 = 9
// arr = ["a","b","c","1","-","A","d","d","f","-","g","g"]

// i = 3일 때, i*(n+1)-1 = 3*(4+1)-1 = 14
// arr = ["a","b","c","1","-","A","d","d","f","-","g","g",,,"-"]

arr을 join()하고 "-"기준으로 split()한 배열에서 ""가 아닌 요소만 필터링하여 반환한다

return arr.join("").split("-").filter(el => el !== "")

// arr.join("") = "abc1-Addf-gg-"
// "abc1-Addf-gg-".split("-") = ["abc1","Addf","gg",""]
// ["abc1","Addf","gg",""].filter(el => el !== "") = ["abc1","Addf","gg"]
profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글