문자열 my_str
과 n
이 매개변수로 주어질 때, my_str
을 길이 n
씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
my_str
의 길이 ≤ 100n
≤ my_str
의 길이my_str
은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.my_str | n | result |
---|---|---|
"abc1Addfggg4556b" | 6 | ["abc1Ad", "dfggg4", "556b"] |
"abcdef123" | 3 | ["abc", "def", "123"] |
입출력 예 #1
입출력 예 #2
💡 문제풀이 과정
- 답안 1번:
for()
반복문을 이용하여i = 0
부터,i < my_str.length;
i += n;
로i = i + n만큼씩 증가
하도록 해준다. 빈 배열인answer
에 문자열을n
길이 만큼씩 잘라push()
하는데, 문자열을 나누는 메소드가 3가지가 있다.slice(시작 인덱스, 끝나는 인덱스)
,substring(시작 인덱스, 끝나는 인덱스)
,substr(시작 인덱스, 자를 길이)
이므로, 세 가지 모두 사용 가능하다.slice()
와substring()
의 경우 시작 인덱스를i
로, 끝나는 인덱스를i + n
으로 하면 되고,substr()
을 사용할 경우엔, 시작 인덱스를i
로, 잘라낼 길이는n
으로 하면 되겠다. (아래 답안 참고)- 답안 2번: 문자열이 아닌 배열의 형태일 때 잘라내는 메소드는
splice()
가 있다. 이 메소드는 원본 배열의 형태를 변형 시킨다. 따라서let arr = my_stri.split(””);
하여 배열 형태로 변수에 선언하여while()
문을 통해arr.length
가 1이상인 동안 동작을 수행하도록 한다.splice(시작 인덱스, 잘라낼 길이)
로 배열을 잘라내는데, 이 잘라낸 배열을join(””)
하여 빈 배열인answer
에 담아준다.while (arr.length) answer.push(arr.splice(0, n).join(””));
- 답안 3번:
match()
와정규 표현식
을 사용한 다른 사람의 풀이다. 아래 코드를 간단히 풀이 해보자면{1,}
즉{Min,}
은 최소 Min개 이상이라는 뜻으로 문자열안의 문자가 최소 1개 이상이어야 하며,${n}
은 주어진 매개변수를 불러와 문자열의 길이를n
개로 구성하겠다는 뜻이다. 두 번째 인자의“g”
는 정규식의 플래그로g
는 Global, 전역 옵션인데 문자열 내의 모든 패턴을 검색 한다는 의미이다. 즉, 주어진my_str
문자열에서 문자의 길이를 6개씩 자른 것(문자는 최소 1개 이상으로 구성되어야 함)을match()
메소드를 이용하여 배열로 나열하여 반환한다.return my_str.match(new RegExp(`.{1,${n}}`, "g"));
✅ 답안 #1
function solution(my_str, n) {
let answer = [];
for (let i = 0; i < my_str.length; i += n) answer.push(my_str.substr(i, n));
// answer.push(my_str.substring(i, i + n));
// answer.push(my_str.slice(i, i + n));
return answer;
}
✅ 답안 #2
function solution(my_str, n) {
var answer = [];
let arr = my_str.split("");
while (arr.length) answer.push(arr.splice(0, n).join(""));
return answer;
}
✅ 답안 #3
function solution(my_str, n) {
return my_str.match(new RegExp(`.{1,${n}}`, "g"));
}