지금까지 풀었던 문제들 중에서 가장 한줄로 풀기 어려웠던 문제다.
문자열을 자르고 반복문을 통해 늘리는것이라면 금방 할 수 있을 것 같은데 다 빼고 한줄로만 정리하려고 하니 머리가 아팠다.
어떤 방법이 좋을까 mdn web docs를 뒤지다가 reduce를 보고 예전에 다른분이 신기하게 쓰는걸 봤던게 생각이 나서 그 방법으로 해결했다.
const solution = (my_string,n) => my_string.split('').reduce((a,b)=>[...a,b.repeat(n)],[]).join('')
문자열을 자르고 reduce를 통해 이전의 결과물 a에 현재 문자 b를 n번 repeat한 문자를 배열에 추가하는 방식으로 최종 결과물을 배열로 만들고, join을 통해 만들어진 배열을 합쳐줬다.
그런데 이 방법도 합치는 동작을 생략할 수 있었다.
const solution = (my_string,n) => my_string.split('').reduce((a,b)=>a+b.repeat(n),'')
위와 같이 처음부터 reduce의 결과물을 문자열로 만들어놓고 추가하는 식으로 썼다면 합치는 동작을 하지 않아도 문제를 해결할 수 있었다.