일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- this
- underbar
- 포스기
- 연습
- ftech
- underscores
- JavaScript
- 엔퀸즈
- 자바스크립트
- react
- 공부
- 개발
- 알고리즘
- 제일어려워
- 클라이언트
- nqueens
- 리액트
- 코드스테이츠
- 코딩
- 일상
- array
- DOM
- grpahQL
- JS
- 초보
- 취업
- method
- vscode
- 해커톤
- Instantiation Patterns
- Today
- Total
목록분류 전체보기 (176)
analogcoding
재귀적으로 해결해보기. 함수를 인자로 받고 클로져 함수의 인자로 숫자n을 받아서 함수를 n번 만큼 실행하는 함수 리턴. 1. 함수를 인자로 받는 부모함수를 생성하고 함수가 실행되면 인자로 받은 함수를 실행. 2. 내부함수를 두고 인자로 n을 받고 n번만큼 재귀로 다시 부모함수를 실행. function recursion(fn) { // 함수를 인자로 받는 부모함수 생성 fn(); // 인자로 받는 함수 실행 return function inner(n){ // 숫자n을 내부함수를 리턴 num-- // n번만큼 실행을 위한 조건을 부여 if(n > 0){ return recur(fn)(n) // 내부함수가 다시 부모함수를 호출, n의 값은 --되어 0이되면 종료 } } } 결과확인
재귀적으로 해결해보기. 반복할 문자열 string과 그 문자열을 몇 번 반복하는지를 나타내는 숫자 n을 매개변수로 받는 함수 repeatString을 재귀적으로 작성. Ex) input : ('dog' , 3 ) => output : 'dogdogdog' input : ('dog' , 0 ) => output : '' 해결방안. 1. input 으로 받는 n 이 0 일 경우 빈문자열을 리턴. 2. n > 0 일 경우 string + n-1번만큼 재귀함수 실행.
재귀적으로 해결해보기. sumDigits 함수는 input으로 숫자를 받고 받은 숫자의 각 자릿수의 합을 리턴한다. 음수를 받는 경우 맨 앞 자릿수는 음수로 계산한다. Ex) input : 1148 => output : 14 (1+1+4+8) input : -316 => output : 4 (-3+1+6) 해결방안. 1. input 숫자를 양수, 음수에 따라 조건을 나눔. 2. 각 자릿수에 접근하기 위해 문자열로 변경. 3. 한 자릿수 양수,음수의 경우 바로 input을 리턴. 4. 양수의 경우 각 자릿수의 값을 reduce를 사용해 누적 값을 리턴. 5. 음수의 경우 - 제거 후 다른 요소에서 첫요소를 뺀 값을 다시 재귀적으로 실행. ㄴ 또 음수가 나올 경우 한 자릿수가 된다면 1. 으로 , 양수가 나..
재귀함수란 ? 함수는 함수 안에서 자기 자신을 다시 호출하는 것. 재귀함수를 사용하는 이유 1. 알고리즘 자체가 재귀적으로 표현할 때 가독성이 좋다. 2. 변수 사용을 줄여 준다. 재귀함수의 단점 메모리를 많이 차지하며 성능이 반복문에 비해 느리다. 재귀함수의 사용예제 Factorial 1부터 정수 n까지의 정수를 모두 곱하는 것. 반복문을 사용한 factorial function factorial(number) { let result = 1; for (var i = number; i >= 1 ; --i ){ result *= i; } return result; } // factorial(5) 의 경우 i는 1,2,3,4,5 이므로 1*2*3*4*5 = 120. 재귀함수를 사용한 factorial fun..
문제. 인자로 받는 배열의 요소가 이 전 요소들의 총합보다 큰 수로만 이루어져있으면 true , 아니면 false 를 리턴. Ex) input : [1,3,6,15,32,70] => output : true input : [1,2,4,5,7,12,15] => output : false 해결방안. 1. 배열의 요소와 그 앞전 요소의 총합을 비교. 2. for문과 sum을 사용. 3. Boolean 값 리턴. sum 이라는 누적값을 받을 변수를 설정하고 정해진 요소 전까지의 누적값과 그 다음 요소의 값을 비교해서 Boolean 값으로 리턴한다. function arrSum(arr){ let sum = 0; for(let i = 0 ; i < arr.length; i++){ sum += arr[i] if(su..
문제. 인자로 받는 숫자의 각 자릿수를 반복적으로 곱해서 한자리수로 만들 때까지의 곱한 수를 리턴. Ex) 39 => 3. ㄴ 한자리 수가 될 때까지 반복 곱셈 : 3 * 9 = 27 => 2 * 7 = 14 => 1 * 4 = 4 . 총 3번 곱셈. 해결방안. 1-1. input num을 문자열로 바꾼 뒤 나눠서 각 자릿수를 곱할 수 있게 만듬. 1-2. 한자리수가 될 때까지 곱하는 조건을 while문으로 주고 곱할 때마다 카운트해서 카운트를 리턴. 2-1. 값이 0인 카운트를 전역변수로 생성. 2-2. input 숫자 num의 자릿수가 한 자리수라면 그대로 카운트를 리턴. 2-3. 아니라면 카운트++ 2-4. input num을 문자열로 바꾼 뒤 나눠서 각 자릿수를 곱한 값을 인자로 재귀함수로 만들어..
function protoype methods call,apply 는 그냥 함수가 실행되도록 "도와"주는 것이고 bind 는 "새로운" 함수를 "만들어" 준다. 함수를 호출하는 2가지 방법 call,apply는 함수를 실행시킨다(=호출해 실행한다). 사용하는 이유는 call,apply메서드의 첫번째 인수 때문이다. call,apply는 첫번째 인수 없이도 에러 없이 작동한다. 인수가 없을 경우, 자동적으로 전역객체를 가리키게 된다. function.prototype.call call은 함수를 빌려오거나 프로퍼티를 가져올 수 있다. case-1. 함수를 빌려오는 경우 case-2. 프로퍼티를 빌려오는 경우 case-3. Array.prototype.slice.call/apply.(obj/arguments)..
문제. 인자로 받는 문자열이 각기 다 다른 알파벳으로 이루어져있다면 true , 중복된 알파벳이 있으면 false를 리턴. Ex) input : "Dermatoglyphics" => output : true input : "aba" / "moOse" => output : false 해결방안. 1. input 값의 대소문자 상관없이 구분. 2. 각 글자들을 비교해서 중복된 글자가 있는지 확인. 3. Boolean 값 리턴. 첫 번째 솔루션. underscore 에 uniq함수를 활용해서 해결한 솔루션. input값을 대소문자 구분없이 만들고 배열로 나눠준다. 하나 씩 값을 넣어서 비교를 위한 빈 배열을 생성한다. var isIsogram = function(str) { str = str.toLowerCas..