POWER 솔루션
function power(base, exponent){
if(exponent === 0) return 1;
return base * power(base,exponent-1);
}
FACTORIAL 솔루션
function factorial(x){
if (x < 0 ) return 0;
if (x <= 1 ) return 1;
return x * factorial(x-1);
}
PRODUCT OF ARRAY 솔루션
function productOfArray(arr) {
if(arr.length === 0) {
return 1;
}
return arr[0] * productOfArray(arr.slice(1));
}
RECURSIVE RANGE 함수 솔루션
function recursiveRange(x){
if (x === 0 ) return 0;
return x + recursiveRange(x-1);
}
피보나치(FIBONACCI) 솔루션
function fib(n){
if (n <= 2) return 1;
return fib(n-1) + fib(n-2);
}
Reverse 솔루션
function reverse(str){
if(str.length <= 1) return str;
return reverse(str.slice(1)) + str[0];
}
isPalindrome 솔루션
function isPalindrome(str){
if(str.length === 1) return true;
if(str.length === 2) return str[0] === str[1];
if(str[0] === str.slice(-1)) return isPalindrome(str.slice(1,-1))
return false;
}
someRecursive 솔루션
function someRecursive(array, callback) {
if (array.length === 0) return false;
if (callback(array[0])) return true;
return someRecursive(array.slice(1),callback);
}
flatten 솔루션
function flatten(oldArr){
var newArr = []
for(var i = 0; i < oldArr.length; i++){
if(Array.isArray(oldArr[i])){
newArr = newArr.concat(flatten(oldArr[i]))
} else {
newArr.push(oldArr[i])
}
}
return newArr;
}
capitalizeWords 솔루션
function capitalizeWords (array) {
if (array.length === 1) {
return [array[0].toUpperCase()];
}
let res = capitalizeWords(array.slice(0, -1));
res.push(array.slice(array.length-1)[0].toUpperCase());
return res;
}
nestedEvenSum 솔루션
function nestedEvenSum (obj, sum=0) {
for (var key in obj) {
if (typeof obj[key] === 'object'){
sum += nestedEvenSum(obj[key]);
} else if (typeof obj[key] === 'number' && obj[key] % 2 === 0){
sum += obj[key];
}
}
return sum;
}
capitalizeFire 솔루션
function capitalizeFirst (array) {
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;
}
stringifyNumbers 솔루션
function stringifyNumbers(obj) {
var newObj = {};
for (var key in obj) {
if (typeof obj[key] === 'number') {
newObj[key] = obj[key].toString();
} else if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
newObj[key] = stringifyNumbers(obj[key]);
} else {
newObj[key] = obj[key];
}
}
return newObj;
}
collectStrings 솔루션: Helper 메소드 재귀 버전
function collectStrings(obj) {
var stringsArr = [];
function gatherStrings(o) {
for(var key in o) {
if(typeof o[key] === 'string') {
stringsArr.push(o[key]);
}
else if(typeof o[key] === 'object') {
return gatherStrings(o[key]);
}
}
}
gatherStrings(obj);
return stringsArr;
}
collectStrings 솔루션: 순수 재귀 버전
function collectStrings(obj) {
var stringsArr = [];
for(var key in obj) {
if(typeof obj[key] === 'string') {
stringsArr.push(obj[key]);
}
else if(typeof obj[key] === 'object') {
stringsArr = stringsArr.concat(collectStrings(obj[key]));
}
}
return stringsArr;
}
'개발공부 > 알고리즘' 카테고리의 다른 글
Ascii code를 사용한 문제풀이 (0) | 2022.12.16 |
---|---|
스터디하면서 배우는 것들 (0) | 2022.09.27 |
Graph (0) | 2022.09.22 |
트리 (1) | 2022.09.21 |
QUEUE (0) | 2022.09.20 |