capitalizeFirst
주어진 string의 배열의 각 문자의 첫번째를 대문자로 만들어서 반환해라.
나는 이 문제를 helper재귀를 사용해서 풀이했다.
//데이터 수집 변수 선언
let result = [];
먼저 다음과 같이 helper재귀에서 도출한 데이터를 수집할 변수를 선언했다.
//내부 재귀함수 호출
function capitalizeFirstPrec(precArr){
//만약에 배열의 길이가 0이라면 리턴
if(precArr.length === 0) return;
//배열을 받아서 첫번째의 배열 str을 사용
let str = precArr[0];
//str[0] 을 to Uppercase 한 뒤에 str.slice(1)과 합치고 데이터 수집변수에 입력
result.push(str[0].toUpperCase().concat(str.slice(1)));
//나머지 배열을 재귀함수에 호출
capitalizeFirstPrec(precArr.slice(1));
}
그리고 내부 재귀함수를 생성했다. 내부 재귀함수는 다음과 같은 순서로 작동한다.
해답솔루션에는 위와같은 helper재귀를 사용하지 않고, 순수재귀만을 사용했다.
if (array.length === 1) {
return [array[0][0].toUpperCase() + array[0].substr(1)];
}
const res = capitalizeFirst(array.slice(0, -1));
const string = array.slice(array.length - 1)[0][0].toUpperCase() + array.slice(array.length-1)[0].substr(1);
res.push(string);
return res;
해답 솔루션에서는 종료점을 0이 아닌 1로 두었다.
해답솔루션에서는 첫 글자 대문자화를 나처럼 문자 변수를 생성하는것이 아닌 이차원 배열의 표현식으로 선택해서 대문자로 만들었다.
또 여기서는 substr을 사용했는데, 나는 slice를 사용했다. 하지만 string에 대한 것이므로 substr이 더 용법에 맞을 것이다.