코딩테스트

코딩테스트 : 문자열 잘라서 배열로 저장하기 (push(), substr(), slice())

김도현2 2023. 4. 1. 21:55
진정으로 웃으려면 고통을 참아야하며 , 나아가 고통을 즐길 줄 알아야 해
- 찰리 채플린
반응형

문자열 잘라서 배열로 저장하기

문자열이 주어 졌을 때, 주어진 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]

 

 

 

 

 

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