문자열 잘라서 배열로 저장하기
문자열이 주어 졌을 때, 주어진 n 길이씩 잘라서 배열에 저장하기
https://school.programmers.co.kr/learn/courses/30/lessons/120913
제안 사항

예시

이 문제는 문자열과 정수가 주어지는데, 문자열을 길이 정수만큼 잘라서 배열에 저장해야 합니다.
예를 들어 "javascript" 란 문자열과 3 이란 정수가 주어졌을땐,
입출력(결과)은 ["jav", "asc", "rip", "t"] 가 return 되어야 합니다.
한번 코드를 짜보겠습니다!
일단 n만큼 문자열을 계속 잘라서 빈 배열에 보내줘야 하니 반복문과 배열 push 메서드가 쓰여야 할거 같습니다!
function solution(my_str, n) {
var answer = [];
for(i=0; i<my_str.length; i+=n){ //(i=0; 문자열갯수까지반복; i를 n만큼 더해서 배열갯수 조절)
}
return answer;
}
for(i=0; i<my_str.length; i+=n)
(i=0; 문자열갯수까지반복; i를 n만큼 더해서 배열갯수 조절)
증감식 부분인 i+=n 이 포인트 입니다.
i가 문자열 갯수를 넘어가는 순간 배열에 빈 문자열이 생깁니다.
이제 반복문에 쓸 내용은,
문자열을 빈 배열에 채워넣어야 하기때문에 push()메서드와,
문자열을 자르기 위해 substr()이란 메서드를 사용 할 겁니다!
왜?!
slice() 메서드도 문자열을 자르는데 사용을 안하나요?
반복문을 사용할거기 때문에 시작위치와 종료위치 두개를 컨트롤하기 까다롭기 때문입니다!
slice(시작위치, 종료위치)
첫 번째 매개 변수로 시작 위치를, 두 번째 매개 변수로 종료 위치를 전달합니다.
substr(시작위치, 추출문자 수)
첫 번째 매개 변수로 시작 위치를 전달하고, 두 번째 매개 변수로 추출할 문자 수를 전달합니다.
const str = "Hello, world!";
//slice
str.slice(0, 5); // "Hello"
str.slice(7, 12); // "world"
//substr
str.substr(0, 5); // "Hello"
str.substr(7, 5); // "world"
substr() 메서드는 시작 위치만 찾으면 정해진 값을 자를 수 있기에 이 문제에서 사용하기 수월합니다.
이제 반복문 내용을 채워보겠습니다.
function solution(my_str, n) {
var answer = [];
let arrNum = 0; //substr() 시작 위치를 위한 변수
for(i=0; i<my_str.length; i+=n){ //(i=0; 문자열갯수까지반복; i를 n만큼 더해서 배열갯수 조절)
answer.push(my_str.substr(arrNum, n)); //answer란 빈 배열에 my_str 문자열을 잘라 요소추가.
arrNum += n; //0부터 시작한 위치를 n 만큼 증가.
}
return answer;
}
answer.push : answer란 배열에 요소를 추가하겠다! 무슨 요소를?
(my_str.substr(arrNum, n)); : my_str (문자열을) substr (자른다) (arrNum, n) arrNum(0) 자리에서 n(정수) 개의 문자열을.
그 다음에 바로
arrNum += n; : substr시작위치에 n(정수) 를 더해서 다음 자리에서 문자열을 자를 준비.
이것을 문자열갯수/n(정수) 만큼 반복 해줍니다.
my_str 문자열과 n 정수를 줘서 예시를 들어보겠습니다.
const my_str = "javascript";
let n = 2;
var answer = [];
let arrNum = 0;
for(i=0; i<my_str.length; i+=n){ //(i=0; 10; i+=2)
answer.push(my_str.substr(arrNum, n)); //(my_str.substr(0, 2))
arrNum += n; //arrNum += 2;
}
//결과: answer = [ja, va, sc, ri, pt]

[ 테스트도 통과한 모습~ ]