코딩테스트 입문 - 문자 반복 출력하기 문제


📢 문제 설명

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.


⚠️ 제한사항

  • 2 ≤ my_string 길이 ≤ 5
  • 2 ≤ n ≤ 10
  • "my_string"은 영어 대소문자로 이루어져 있습니다.

🔶 입출력 예

my_stringnresult
"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은 배열 메서드인데 왜 나는 문자열에다 배열 메서드를 사용하려 했는지... 이렇게 문제를 푼지 텀이 좀 지났을 때 풀면 깜빡하는 게 생기는 거 같다.

💡 다른 사람의 풀이(map, repeat 함수)

첫 번째 풀이

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 함수

🔅 repeat 메서드

문자열을 반복한 값을 반환하는 메서드

'abc'.repeat( 2 )

abc를 두 번 반복한 abcabc를 반환한다.

profile
프론트엔드 개발자입니다.

0개의 댓글