
아주아주 간단한 알고리즘 문제를 조금 더 잘 풀어볼 순 없을까??
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
조건
2 ≤ my_string 길이 ≤ 5
2 ≤ n ≤ 10
"my_string"은 영어 대소문자로 이루어져 있습니다.
가장 기본적인 방법으로 이중 반복문을 사용할 수 있다. 반복문을 이용하여 배열을 돌고 각각의 문자를 n번 반복한 후 그걸 정답 문자열에 추가한다.
function solution(my_string, n) {
let answer = "";
for (let elem of my_string) {
for (let i = 0; i < n; i++) {
answer += elem;
}
}
return answer;
}
그러나 난 뭔가 이렇게 풀고 싶지 않았다.. 코드가 너무 길어져서 가독성도 떨어지고 최근 배운 배열의 메서드 체이닝을 활용해서 풀고 싶었다.
그래서 방법을 다시 고안해보았다.
💡아이디어💡
여기서 문제는 '어떻게 배열의 요소들을 n번 반복할 것인가?'였다.
자바스크립트에 불가능은 없다.. 찾아보니 다행히 repeat라는 메서드가 있었다!
repeat()는 문자열을 주어진 횟수만큼 반복해서 붙인 새로운 문자열을 반환한다. 매개변수로 반복할 횟수를 넣어주면 되는 아주 간단한 메서드이다.
"apple".repeat(2) // "appleapple"
반복 횟수에서 주의해야 할 점⚠️
- 반복 횟수는 양의 정수여야 한다.
- 반복 횟수는 무한대보다 작아야 하며 최대 문자열의 크기를 넘으면 안된다.
그래서 아까 내가 생각했던 방식대로 repeat을 활용해 구현할 수 있었다.
function solution(my_string, n) {
return Array.from(my_string).map((x) => x.repeat(n)).join("");
}
알고리즘을 어떻게 하면 잘 풀 수 있을까?
정답은 반복, 반복, 또 반복밖에 없는 것 같다..
단순한 문제도 오늘 내가 배운 내용을 활용해서 풀거나 더 간결하게 푸는 방법을 고민하다보니 어느정도 메서드들도 손에 익었다. 그리고 이 문제는 이렇게 풀면 되겠구나 감이 잡히기 시작했다.(물론 아직 쉬운 문제들을 풀고 있지만,,)
알고리즘 마스터가 되는 그날을 위하여💪🏻💪🏻