일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 공부
- underbar
- method
- 클라이언트
- 개발
- 제일어려워
- vscode
- 코딩
- nqueens
- grpahQL
- 코드스테이츠
- JavaScript
- 자바스크립트
- ftech
- this
- 리액트
- DOM
- Instantiation Patterns
- 초보
- react
- underscores
- 연습
- JS
- 일상
- 엔퀸즈
- 취업
- 포스기
- 해커톤
- Today
- Total
목록Study JS for me/Algorithm (16)
analogcoding
json 형태의 TREE_DATA 에서 객체와 배열로 구성된 안에서, 인자로 넘기는 특정 id값을 가지고 있는 객체를 찾아 리턴. 이 때 객체는 children이라는 키 값에 자식 노드를 가질 수 있으며, recursion을 통해서 부모 뿐만이 아닌, 자식 노드 중에서도 id값을 가진 객체가 있는지를 찾아서 리턴. json 구조의 TREE_DATA var TREE_DATA = { "items": [ { "id": "1", "name": "johnny" }, { "id": "2", "name": "ingi", "children": [ { "id": "3", "name": "johnson" }, { "id": "4", "name": "katy" }, { "id": "5", "name": "steve", "c..
var getElementsByClassName = function(className){ // 먼저 인자로 받는 className과 동일한 이름에 class이름을 가진 것을 찾아서 // 그 class이름과 동일한 class를 가진 것들을 빈 배열에 담아보자. var result = []; // 빈배열 생성 function check(elements){ // elements는 class이름을 확인할 장소 ex) div , span 등등 if ( elements.classList){ // 그 장소에 class를 가진 게 존재한다면 if (elements.classList.contains(className)){ // 그 클래스에 인자로 받는 className이 있으면 result.push(elements); ..
문제. input 으로 숫자와 문장이 섞인 문자열이 들어오면 섞인 숫자의 합을 글자수로 나눈 값을 리턴. 소수일 경우 반올림/내림해서 리턴. Ex) input : "Hello6 9World 2, Nic8e D7ay!" => output : ((6 + 9 + 2 + 8 + 7 = 32) / 17 letters) = 2 해결방안. 1. input 을 배열로 나누고 각 요소가 숫자인지 알파벳인지 판단. 2. 판단을 위한 알파벳으로 이루어진 소문자 배열을 생성. 3. input 을 소문자로 통일. 4. 각 인덱스에서 숫자 타입이 있다면 변수에 모두 더 함. 5. 문자의 경우 빈 배열에 넣어주고 그 length 를 파악. input 을 소문자로 바꾼 뒤 배열로 변환 , 알파벳 문자열 배열 생성 , 문자열을 담을 ..
문제. input 으로 주어진 문자열의 각 단어들을 키로 , 단어의 사용 횟수를 값으로 가친 객체로 리턴하고 빈 문자열이 오면 빈 객체를 리턴. Ex) input : 'ask a bunch get a bunch' => output : {ask: 1, a: 2, bunch: 2, get: 1} 해결방안. 1-1. input 문자열을 분리해서 빈 객체의 key 값으로 정함. 1-2. key 의 값은 1. 1-3. 이미 key 가 존재 할 경우 값 ++ 2-1. reduce 메소드의 초기값으로 빈 객체를 줌. 2-2. 객체=acc 안에 curr이 있다면 값++ 2-3. 없다면 값을 1 로 지정. 첫 번째 솔루션. 빈 객체를 생성. 빈 문자열이 들어오면 빈 객체를 리턴하고 문자열을 공백 기준으로 나눔. unct..
문제. sumDigits 함수는 input으로 숫자를 받고 받은 숫자의 각 자릿수의 합을 리턴하고 음수를 받는 경우 맨 앞 자릿수는 음수로 계산해서 리턴. Ex) input : 1148 => output : 14 (1+1+4+8) input : -316 => output : 4 (-3+1+6) 해결방안. 1. input 숫자를 양수, 음수에 따라 조건을 나눔. 2. 각 자릿수에 접근하기 위해 문자열로 변경. 3. 한 자릿수 양수,음수의 경우 바로 input을 리턴. 4. 양수의 경우 각 자릿수의 값을 변수 sum에 반복적으로 더해서 누적 값을 리턴. 5. 음수의 경우 맨 앞 자릿수에 -1을 곱해 변수로 설정, 그 수에 나머지 값들을 반복적으로 더해서 누적 값을 리턴. input의 각 자릿수의 접근을 위해..
재귀적으로 해결해보기. 함수를 인자로 받고 클로져 함수의 인자로 숫자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. 으로 , 양수가 나..