
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
| my_string | n | result |
|---|---|---|
| "hello" | 3 | "hhheeellllllooo" |
입출력 예 #1
"hello"의 각 문자를 세 번씩 반복한 "hhheeellllllooo"를 return 합니다.
function solution(my_string, n) {
var answer = '';
for(let i = 0; i < my_string.length; i++) {
for(let j = 0; j < n; j++)
answer += my_string[i];
}
return answer;
}
map을 사용하려 했는데 자꾸 에러가 나서 포기하고 이중 for문을 사용했다.
제출하고 나서 다른 사람의 풀이를 보고 나서야 왜 에러가 떴는지 알 수 있었다.
map은 배열 메서드인데 왜 나는 문자열에다 배열 메서드를 사용하려 했는지... 이렇게 문제를 푼지 텀이 좀 지났을 때 풀면 깜빡하는 게 생기는 거 같다.
첫 번째 풀이
function solution(my_string, n) { var answer = [...my_string].map(v => v.repeat(n)).join(""); return answer; }
두번 째 풀이
function solution(my_string, n) { return my_string.split('').reduce((acc, cur) => acc + cur.repeat(n), '') }
문자열은 spread 문법을 이용하면 map 메서드를 사용할 수 있다.
그러고 나서 n번 만큼 한 문자를 반복한다.
만약에 그 다음 join 함수를 사용하지 않았을 경우에는 아래와 같이 배열로 출력된다.

그렇기 때문에 배열을 문자열로 출력해주는 join 함수를 사용한다.

기억이 잘 나지 않는다면 글을 다시 보도록 하자. join 함수
문자열을 반복한 값을 반환하는 메서드
'abc'.repeat( 2 )
abc를 두 번 반복한 abcabc를 반환한다.