본문 바로가기
반응형

분류 전체보기119

클로저를 이용한 피보나치 수열을 리턴하는 메서드 출력할 때 마다 피보나치수열을 차례로 리턴해야 함 클로저의 정의나 특징은 알고 있었으나, 문제에서 파라미터가 정의되지 않았다는 점과 function을 리턴해야 한다는 점이 초기 접근자체를 어렵게 했다. 내가 여태 배운것 중 가장 이해도가 낮다고 생각하는 고차함수의 개념을 이용해야하기 때문에 더 힘들었던 것 같다. 실마리는 검색에서 찾았다. 클로저를 이용해서 함수를 리턴하며 실행하는 방법과 클로저 함수(내부함수)를 이용할 때 내부함수엔 얼마든 파라미터를 써도 된다는 점을 알게되자 조금씩 생각의 가닥이 잡히는 느낌이었다. 우선 몇번 풀어봤던 피보나치 수열의 값을 리턴하는 클로저 함수를 작성했다. let fibo = function(n){ if(n 2020. 10. 12.
TIL 1011 복리계산 거듭제곱 아스키코드 repeat() 빈 배열, 객체의 타입 객체의 메서드 정의 배열에서 가장 긴 문자열 연이율을 알 때 복리계산 내코드 function interest(interestRate) { /* 원금*이자율/100 > 2 될 때 까지 year를 카운트 */ let year=1; while(true){ if((1+(interestRate/100))**year >= 2){ return year; } year++; } } 복리로 증가하는 원금 일반식 ( 원금 + (연이율 / 100) )^year(연수) 원금을 1로 두고 원금이 2배 이상되는 시점까지 걸리는 연수를 카운트했다. 참고 : www.mathsisfun.com/money/compound-interest.html 다른방법 function computeWhenDouble(interestRate) { let rate = 1 + interestRate .. 2020. 10. 12.
TIL 1010 arr.slice() VS str.slice() arr.slice(begin, end) vs str.slice(begin, end) 전체적으로 동일한 동작이다. 문자열을 다룰 때 배열처럼 사용하기 때문인듯. 인자를 입력하지 않으면 배열(문자열) 전체를 얕은복사해서 리턴. 음수가 인자로 들어오면 배열(문자열)의 끝에서부터의 길이를 나타냅니다. ex) arr.slice(-2)하면 배열 마지막 두개의 요소를 리턴 ex) str.slice(-2)하면 문자열 마지막 두글자를 문자열로 리턴 arr[begin]부터 arr[end-1]까지의 요소를 가진 새로운 배열 리턴 end가 없으면 arr[begin]부터 arr[length-1]까지 str[begin]부터 str[end-1]까지의 문자를 가진 새로운 문자열 리턴 end가 없으면 str[begin]부터 str[l.. 2020. 10. 12.
TIL 1009 소수구하기 null 과 undefined 구분 소수구하기 내 풀이 function prime(num){ let count=0; for(let i=1;i 2020. 10. 12.
.appendChild()가 DOM 노드를 "이동"시키는 이유 위와 같은 코드를 수행했을 때 많은 사람들이 span요소가 div.b로 "복사"된다고 예상한다. 하지만 결과는 다르다 트리의 정의에서 이렇게 설명한다. 트리구조에 포함되어있는 객체(object)는 null이거나 object거나 자식을 갖는 "하나"의 부모를 가진다. 모든 노드는 루트 노드(최상위 노드)를 제외하곤 모두 "단 하나"의 상위 연결(하나의 부모)을 가진다는 것이다. 결론적으로 노드를 원래 부모에서 다른 부모쪽으로 이동시키고 싶다면, 트리 구조상 노드는 두개의 부모를 가질 수 없기 때문에 먼저 원래 부모에서 제거된 후, 새로운 부모에게 이동되어야 한다. 출처 : indepth.dev/here-is-why-appendchild-moves-a-dom-node-between-parents/ 2020. 10. 9.
제곱근 구하기 바빌로니아법 .toFixed() 소수점 두자리까지 (세번째 자리에서 반올림) 구하기 바빌로니아 법으로 제곱근 구하기 방법 1. 바빌로니아법을 활용해서 코딩한 예 let result=0; let x=1; for(let i=0; i num 일 때, while 문을 빠져나와 base^2 === num 이면 base를 리턴한다. 3. 2번의 조건을 충족하지 못했을 때, base에서 diff 의 i 번째 인덱스를 뺀다. 4. 1~3번까지의 과정을 diffs의 마지막 인덱스 값까지 반복한다. 5. base의 소수점 둘째자리까지 반올림하여 리턴한다. 위에서 사용된 .toFixed()의 설명 .toFixed() 2020. 10. 8.
TIL 1007 _.sortBy(arr.sort()) _.flatten(재귀함수) 3일걸린 문제 계속 이해가 안가서 3일 밤낮으로 고민했던 문제. 항상 문제를 제대로 이해했다고 생각하고 푸는순간 맹점이 생긴다. 잘했다고 생각했는데 풀리지 않는것은 맹점을 놓치고 있어서다. 이것을 꼭 반드시 항상 주의하자. _.sortBy ( arr.sort( ) ) 계속 sort( function(a, b){...} ) 으로 풀려고 시도했는데, 인자로 전달해주는 function 에서 어떤 순서로 a, b가 들어가는지어떤 알고리즘으로 정렬되는지 이해하지 못해서 계속 골머리를 앓았다. 검색해보다 누군가가 댓글로 설명해 둔것이 있어 참고하고 완전한 이해는 힘들다고 판단. 흐름만 이해하기로 했다. 아래는 내가 이 문제를 며칠동안 고민하게 만든 이유 1. 인자로 주어지는 arr이 const로 선언되어 값이 변경될 수 없다. .. 2020. 10. 7.
TIL 0928 for in, Array와 Object 구분법 for ( in ) 사용법. (객체 순환시) for(let key in collection){ key ... } key를 꼭 let 키워드로 선언해서 오류가 발생하지 않도록 하자. if(Array.isArray(collection)) { ... }else{typeof collection === 'object'){ ... } 또는 if(collection instanceof Array){ ... }else if(collection instanceof Object){ ... } Array는 Object 타입 안에 속하기 때문에 array instanceof Object //true 이다. 그래서 else if로 분기 순서를 정확히 나눠주는 것이 중요. 순서에 주의. 2020. 10. 7.
코드스테이츠 Full Pre 4주차 회고 2주차 회고 때 하려고 했던 것은 2가지 였다. 1. 개념 복습할 때 풀었던 코드도 다시보고 다시 생각하는 습관을 들이자. 2. 코드 리팩토링하자. 학창시절부터 한 번 풀었던 문제는 다시 돌아보지 않았다. 오답노트도 어려운 문제만 몇개 하는 수준. 하지만, 지금은 다르다. 제대로 학습하고 최종 목표인 취업까지 달성해 내려면 습관을 바꿀 필요가 있다. 조금씩 복습하는 습관을 들이려했다. 하루를 마치면 하루동안 페어분과 풀어본 문제를 돌아보고 "이땐 이렇게 생각해서 이렇게 풀었지."하며 함께 푼 코드를 혼자 리뷰하는 식으로 봤다. 확실히 처음엔 어색하고 이걸 풀자마자 다시보는게 의미가 있나 싶었지만, 복습의 위력은 나중에 나타났다. 한 번이라도 다시 본 코드는 나중에 비슷한 경우가 있을 때 꼭 생각이 났고,.. 2020. 10. 6.
반응형