문자열 반복 알고리즘을 풀다가 반복을 숫자 곱하는 방법과 같이 * 을 사용하여 처리하려고 했을때 문제가 발생했습니다.
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
for (let i = 0; i < input.length; i++) {
let arr = input[i].split(" ");
if (arr.length > 1) {
let result = "";
let num = arr[0];
let strArr = arr[1].split("");
for (let j = 0; j < strArr.length; j++) {
// 문제 발생
result += strArr[j] * num;
}
console.log(result);
}
}
위와 같은 코드로 콘솔로그를 확인해보니 NaN이 발생했습니다.
문자열과 숫자를 곱하는건 스크립트에서 숫자와 문자의 곱으로 생각하여 타입이 맞지않아 오류가 발생한거 같습니다.
쉽게 생각하여 반복문을 사용하면 되었겠지만 코드가 길어지고 가독성이 떨어지는 부분이 있어 지원하는 함수가 있지 않을까 생각하여 검색을 해봤습니다.
repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환합니다.
출처 : mozilla
자바스크립트에서는 문자열을 반복하는 함수로 repeat()를 지원하고 있었습니다.
String.repeat([반복될 수])
for (let j = 0; j < strArr.length; j++) {
// 문제 해결
result += strArr[j].repeat(num);
}
콘솔을 확인해보니 원하는 결과값이 나오는것을 확인할 수 있었습니다.
repeat는 반복된 문자열을 반환하는 함수로 ECMAScript 2015 에 추가되었으며, 모든 웹브라우저와의 호환성을 가지고 있지만 일부 사용할 수 없는 구현체가 존재합니다.
자바스크립트 뿐만 아니라 많은 언어에서는 개발자가 구현하려는 부분에 대해서 이미 구현되어있는 함수들이 많이 존재합니다.
무조건 검색보다는 직접 docs를 읽어보고 찾아보는 습관을 들여야겠습니다!!