JavaScript | TypeScript/Javascript 코딩테스트

[ Javascript ] 코딩테스트 연습 ( 잘라서 배열로 저장하기 )

shiro21 2023. 1. 11. 20:20
반응형

잘라서 배열로 저장하기

문제 설명

문자열 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"]

입출력 예 설명

입출력 예 #1

  • "abc1Addfggg4556b" 를 길이 6씩 잘라 배열에 저장한 ["abc1Ad", "dfggg4", "556b"]를 return해야 합니다.

입출력 예 #2

  • "abcdef123" 를 길이 3씩 잘라 배열에 저장한 ["abc", "def", "123"]를 return해야 합니다.

유의사항
  • 입출력 예 #1의 경우 "abc1Addfggg4556b"를 길이 6씩 자르면 "abc1Ad", "dfggg4" 두개와 마지막 "556b"가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.

 

1번방법

function solution(my_str, n) {
    var answer = [];
    let arr = my_str.split("");

    let count = n;
    for (let i = 0; i < arr.length; i += n) {

        answer.push(arr.slice(i, count).join(""));

        count = count + count;
    }
    return answer;
}

console.log(solution("abc1Addfggg4556b", 6)); // ['abc1Ad', 'dfggg4', '556b']
console.log(solution("abcdef123", 3)); // ['abc', 'def', '123']

37.5%...

 

2번 방법

function solution(my_str, n) {
    var answer = [];

    for (let i = 0; i < my_str.length; i += n) {
        answer.push(my_str.substr(i, n));
    }
    return answer;
}

console.log(solution("abc1Addfggg4556b", 6)); // ['abc1Ad', 'dfggg4', '556b']
console.log(solution("abcdef123", 3)); // ['abc', 'def', '123']

62.5%...

substr() 메서드로 i번째부터 n번째까지 넣어주는 방법

4번으로 성공한 이후에 2번과 같은 방법으로 푼 사람이 있길래 다시 해보니까 성공했습니다.. 뭐지 ?...

 

3번 방법

function solution(my_str, n) {
    var answer = [];
    let arr = my_str.split("");

    for (let i = 0; i < arr.length; i++) {
        answer.push(arr.splice(0, n).join(""))
    }
    return answer;
}

console.log(solution("abc1Addfggg4556b", 6)); // ['abc1Ad', 'dfggg4', '556b']
console.log(solution("abcdef123", 3)); // ['abc', 'def', '123']

62.5%...뭐지..

splice() 메서드로 arr를 잘라내서 for문 돌리기입니다.

 

4번 방법

function solution(my_str, n) {
    var answer = [];
    let arr = my_str.split("");

    while(arr.length > 0) {
      console.log(arr.length);
        answer.push(arr.splice(0, n).join(""));
    }
    return answer;
}

console.log(solution("abc1Addfggg4556b", 6)); // ['abc1Ad', 'dfggg4', '556b']
console.log(solution("abcdef123", 3)); // ['abc', 'def', '123']

while문으로 돌리니까 성공했습니다. 이유가 뭔지..더 빨라서 그런가..

 

5번 방법

function solution(my_str, n) {
    var answer = [];
    let arr = my_str.split("");

    for(const ele of arr) {
      answer.push(arr.splice(0, n).join(""));
    }
    return answer;
}

console.log(solution("abc1Addfggg4556b", 6)); // ['abc1Ad', 'dfggg4', '556b']
console.log(solution("abcdef123", 3)); // ['abc', 'def', '123']

for...of로도 돌려봤지만 실패가 뜹니다..

반응형