본문 바로가기

나를 성장시키는 알고리즘

(15)
클로저 문제 : 안에 정의된 변수가 있다 이를 어떻게 빼내서 출력할래? 해결: count를 함수 리턴값에 저장함으로써 함수 선언을 저장 새로운 변수를 호출할 때 이 함수의 값을 부를 수 있음 function check(element){ //안에 변수가 정의 됨 let count =0 for(let i=0; i
재귀의 정리 상황 재귀를 쓰는 이유는 이 함수의 반복이 언제 끝날지 모른다는 것이 핵심이다. 그래서 이 함수의 반복을 통해 데이터를 확인하면서!!( slice, 인자값을 줄이기 등)어떤 결과를 도출하되 그 끝나는 지점을 알려줘야 한다. 들어온 수의 함수 더하기 function sumTo(num) { // TODO: 여기에 코드를 작성합니다. // 별도의 최적화 기법(memoization)은 금지됩니다. //재귀의 핵심은 끝날 때까지 계속 이 함수를 진행하는거야 if(num=== 0){ return 0 } if(num
reduce의 활용 *기존 배열의 중복을 점검하라!! 문제 배열의 중복 요소를 제거해라!! reduce 함수의 장점은 요소의 합을 계속 누적하기 때문에 includes 함수를 활용하면 return 된 누적된 집합 요소와 현재 요소를 비교할 수 있는 결과가 확인가능하다. 해결 array.reduce((acc,cur)=>{ ​ ​ if(acc.includes(cur)){ ​ return acc ​ }else{ ​ return [...acc,cur] } ​ ​ }) (3) ['b', 'c', 'a']
다차원 배열을 계속 접근하여 새로운 배열을 추출 문제 :중첩 배열에 접근하여 새로운 배열 추출 주의사항 함수 flattenArr는 재귀함수의 형태로 작성합니다. Array Method flat()과 flatMap() 사용은 금지됩니다. 반복문(for, while) 사용이 가능합니다. 입력받은 배열은 함수의 호출 뒤에도 처음 상태를 유지해야 합니다(immutability). 입력으로 전달되는 다차원 배열이 중첩된 정도(중첩의 깊이)는 정해져 있지 않습니다. 빈 배열을 입력받은 경우, 빈 배열을 리턴해야 합니다. 입출력 예시 let output = flattenArr([[1], 2, [3, 4], 5]); console.log(output); // --> [1, 2, 3, 4, 5] output = flattenArr([[2, [[3]]], 4, [[[5..
데이터 타입이 배열인 변수의 문자열 만들기(JSON 연습) 문제 데이터 타입이 배열인 변수를 JSON 형태로 바꾸자(쉽게 말해 [1,2,3,4] => '[ 1,2,3,4]' 푸는 순서 코드 1. 문자열의 형태를 생각해서 일일이 붙이기 if( typeof obj === 'object'){ //배열인경우 if(Array.isArray(obj)){ //[4,5,6]=>"[4,5,6]"를 만들어라 //result에 꺽쇄를 넣자 result +="["; //요소를 넣기 위해서는 하나씩 반복해서 문자열화 시켜서 더해주면 된다. for(let i=0; i
이중배열 간단하게 풀기 sumOfArraysInArray 문제 2차원 배열(배열을 요소로 갖는 배열)을 입력받아 모든 수(number)의 합을 리턴해야 합니다. 입력 인자 1 : arr 배열을 요소로 갖는 배열 arr[i]는 임의의 타입을 요소로 갖는 배열 출력 number 타입을 리턴해야 합니다. 주의 사항 합을 구할 때 number 타입만 고려해야 합니다. 입출력 예시 let output = sumOfArraysInArray([ [1, 2], [undefined, 4, '5'], [9, 'hello'], ]); console.log(output); // --> 16 풀이 1. 1차원 배열을 요소로 갖는 2차원 배열이라는 것을 인지. 1차원 배열의 요소를 한 곳에 몰아넣는 작업을 하면 요소만 추출 2. 한 곳에 몰아 넣고 '..
배열을 객체로 전환하기 문제 문자열을 입력받아 문자열에 존재하는 각 단어의 개수 정보를 담은 객체를 리턴해야 합니다. 입력 인자 1 : str string 타입의 공백이 있는 문자열 str[i]는 알파벳 또는 공백 출력 각 단어(소문자 형태)를 키로 하고, 각 단어의 개수를 값으로 하는 객체를 리턴해야 합니다. 주의 사항 단어는 공백을 제외한 연속된 알파벳 문자열로 정의합니다. 공백은 한 칸 이상입니다. 단어가 존재하지 않는 경우, 빈 객체를 리턴해야 합니다. 대소문자를 구분하지 않습니다. str.trim 사용은 금지됩니다. 입출력 예시 let output = test1('ask a bunch try a BUNCH get a bunch'); console.log(output); // --> { ask: 1, a: 3, bunc..
객체를 중첩배열로 리턴하는 함수 문제 객체의 key와 value를 배열로 리턴한다. const obj = { id: 1, city: 'Biloxi', country: 'United States', address: 'Walton', }; const arr = [ ["id", 1], ["city", "Biloxi"], ["country", "United States"], ["address", "Walton"] ], 해설 1. 객체의 key와 value 중 하나를 배열로 만든다 result-map= Object.keys(obj) 2. key의 요소를 추출하면 그 요소를 map 을 이용해서 key와 배열을 요소로 가지는 새로운 배열을 반환한다. map((key)=>{ return [key, obj[key]] } 코드 let result_map..