문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
나에 해석은 각 문자를 뽑아서 n번씩 배열에 넣고 그것을 풀자는 생각이었다
function solution(my_string, n) {
var answer = []; // answer = ''
for(let i = 0; i < my_string.length; i++ ){
for(let j = 0; j < n; j++){
answer.push(my_string[i])
// answer += my_string[i]
}
}
return answer.join('');
// answer
}
그 생각은 맞았고 일단 무사 통과는 했다
다만 다른 사람들의 풀이를 보면 push()를 사용할 필요 없이 주석처럼 문자열로 더해주면 되는 부분이었다
그리고 여기서 더 나아가면 repeat()를 사용하는데 방법은 다양하다
for of문과 reduce()를 사용하기도 하지만 가장 보기 쉽고 깔끔한 것은 이 방법이었다
function solution(my_string, n) {
var answer = [...my_string].map(v => v.repeat(n)).join("");
console.log(answer);
return answer;
}
// [...my_string] 한 글자씩 배열의 인덱스에 순서대로 할당됨
// map(callback) 각 요소가 콜백 함수에 주어져 리턴값으로 새로운 배열 생성
// repeat(n) n 번만큼 그 문자를 반복한다
// 각 문자가 n번만큼 반복된 문자열의 배열이 만들어진다
구조분해할당이라는 게 여러개의 변수 배열에 다른 배열의 각 요소를 할당하는
단순히 변수를 한 번에 여러개 선언할 수 있는 방법이라고만 생각을 했었는데
위 방법을 보고 아 저렇게 문자열을 배열 안에서 스프레드 문법으로 각 문자가 인덱스에 들어간
배열로 바꾸고 배열의 각 요소를 순서대로 매개변수로 전달할 수 있구나 하는 것을 알게되었다
=> 문자열을 분해하여 문자 하나 하나를 매개변수로 전달
'오늘 뭐했냐 > 기억하면 좋을 문제들' 카테고리의 다른 글
| 문자열 안에 문자열 (0) | 2023.05.27 |
|---|---|
| 모음 제거 - 정규표현식 (0) | 2023.05.27 |
| 문자열 뒤집기 - 스프레드 문법, .reverse(), .join() (0) | 2023.05.27 |
| 제곱 수 판별하기 (0) | 2023.05.26 |
| 옷가게 할인 받기(총 구매 가격에 따른 할인률 적용가) (0) | 2023.05.26 |