| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 자바스크립트
- 포스기
- 클라이언트
- 연습
- 해커톤
- array
- 취업
- vscode
- JS
- nqueens
- 코드스테이츠
- 코딩
- method
- underbar
- 엔퀸즈
- ftech
- 알고리즘
- 리액트
- react
- 공부
- 개발
- 제일어려워
- 일상
- 초보
- grpahQL
- this
- Instantiation Patterns
- DOM
- underscores
- JavaScript
- Today
- Total
목록2019/04 (20)
analogcoding
재귀함수란 ? 함수는 함수 안에서 자기 자신을 다시 호출하는 것. 재귀함수를 사용하는 이유 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..
문제. 인자로 받는 문자열의 첫 글자들을 대문자로 변경한 뒤 리턴. Ex) input : "hello world" => output : "Hello World" input : "javascript is sexy" => output : "Javascript Is Sexy" 해결방안 1. 공백으로 구분된 단어를 배열로 나눔. 2. 첫 글자만 toUpperCase()를 사용해서 대문자로 변경. 3. 다시 문자열로 합친 뒤 리턴. split(' ') 메소드를 써서 공백으로 구분 된 단어 요소로 나누어준다. var letterCapitalize = function(str) { str = str.split(' '); map() 함수를 이용해서 elements의 0번째 요소를 대문자로 변경하고 남은 elements에..
Execution Context (실행 컨텍스트)는 scope, hoisting, this, function, closure 등의 동작원리를 담고 있다. 어떤 함수가 호출되면 execution context가 만들어진다. 정의 : 실행컨텍스트는 추상적인 개념 . 실행 컨텍스트는 실행 가능한 코드가 실행되기 위해 필요한 환경 변수 : 전역변수, 지역변수, 매개변수, 객체의 프로퍼티 함수 선언 변수의 유효범위(Scope) this this 자바스크립트에서 함수가 호출될 때, 함수 호출 방식에 따라 this 에 바인딩되는 객체가 달라진다. 정의 : 모든 함수 scope 내에서 자동으로 설정되는 특수한 식별자. execution context의 구성요소 중 하나로 , 함수가 실행되는 동안 이용할 수 있다. Bi..
문제. 인자로 받는 문자열의 숫자가 2의 제곱수면 true를 아닐 경우 false를 리턴. Ex) input : 2 , 4 , 8 , 16 , 32 , 64 , 128 ... => output : true input : 1 , 22 , 27 , 222 ... => output : false 해결방안. 1. input값을 숫자로 받기. 2. for문을 사용해서 input을 2의 i ( i는 input보다 작게 ) 제곱과 비교. 3. Boolean 값 리턴. iput을 숫자로 변환하고 i 번 제곱할 i 를 설정해준다. var powerOfTwo = function(str) { var num = Number(str); // 숫자로 변환 for(let i = 1 ; i < num ; i++){ // input이..