문제 설명
문자열my_string
과 정수n
이 매개변수로 주어질 때,my_string
에 들어있는 각 문자를n
만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
my_string
을 배열로 만들어야겠다고 생각해서 spread syntax를 생각했다.map
메서드를 생각했다.repeat
메서드를 사용하여 배열의 첫 번째 인덱스부터 n번 씩 반복된 새로운 문자열을 만들었다.join('')
을 사용하여 배열을 문자열로 바꾸고, 한 문자열로 만들어주었다.const solution = (my_string, n) => {
return [...my_string].map(a => a.repeat(n)).join('');
}
function solution(my_string, n) {
return my_string.split('').reduce((acc, cur) => acc + cur.repeat(n), '')
}
split을 사용하여 my_string
의 문자 하나하나를 배열에 담고, reduce
메서드를 사용하여 새로운 문자열을 만들어내었다.
위 코드를 익히기 위해 하나씩 콘솔에 찍어보았는데, acc + cur.repeat(n), ''
에서 ''
를 지울 때에는 "heeellllllooo"가 반환되었다. 이게 왜 그런지 이해가 잘 되지 않아 MDN을 찾아보니 아래와 같이 나왔다.
arr.reduce(callback[, initialValue])
initialValue
를 제공하지 않으면,reduce()
는 인덱스 1부터 시작해 콜백 함수를 실행하고 첫 번째 인덱스는 건너 뜁니다.initialValue
를 제공하면 인덱스 0에서 시작합니다.
공부해나가면서 reduce
메서드를 조금 더 익혀야겠다.