본문 바로가기
관리자

전체 글

(999)
Prm 4 : recursion, combination 배운점 1. fibonacci와 같이 재귀적으로 2개 함수의 합을 구하는 방식은 시간복잡도가 2^N이 된다. ex) fibonacci(n-1) + fibonacci(n-2) 2. 제한적인 조건으로 초기 문제가 정의되고, 나머지 문제의 크기가 줄어드는데 초기 문제와 같은 형태가 된다면 recursion을 사용하는 것이 유리하다. 3. 26~41번 줄과 같이, 재귀함수를 쓰더라도 if문으로 분기하여 이미 구한 답은 리스트에서 꺼내오도록 하면 시간복잡도가 O(N)으로 줄어든다. (사진 아래에 계속) 4. (기타) Combination값 구하는 함수 곱셉은 for문으로 a 까지 차례대로 곱하되, 나눗셈은 if문으로 2개로 분기하였다. 3개의 자리에 2명을 배치할 수 있는 경우의 수 보통 N C i (combin..
BubbleSort 문제 BubbleSort를 .sort 메소드를 쓰지말고 직접 구현해보는 문제. 배울점 1. bubbleSort 자체가 두 값을 비교하여 큰 값을 뒤로 보내는 방식이다. 2. bubbleSort가 1회 실행되면, 리스트에서 가장 큰 값은 리스트의 제일 뒤쪽으로 가게 되며 이것은 1개의 값이 정렬된 것이라고 볼 수 있다. ex) [3, 4, 5, 9, 1, 2]와 같이 제일 큰 수 9가 애매한 위치에 있더라도 두 값의 위치를 바꾸는 것을 순차적으로 진행하면 9가 리스트의 맨 끝에 오게됨을 알 수 있다. 3. 최적화를 위해 6번줄에서와 같이 len - 1 - i를 반복문의 범위로 준다. 즉, 맨 뒤쪽의 정렬된 큰 값들은 신경쓰지 않도록 한다. 4. 2개의 값을 바꾸는 로직은 9번줄과 같이 ES6의 구조분해할당..
4. graphQL 서버 기본 작성법 : schema, resolver 목표 기본적인 graphql 서버 작성법과 동작과정을 학습해본다. 구성 아래 그림과 같이 graphql 폴더에 resolver.js와 schema.graphql 파일을 작성하였다. schema.graphql 파일 여기서는 DB를 작성하는 것처럼 데이터의 항목과 종류를 정의한다. type : Query 문으로 모든 query가 집중되고, 각 데이터를 각각의 type에서 뽑아내는 형식으로 이해했다. 아래의 사진에서 보면, type Query 아래에 person : Person! 으로 정의된 것을 볼 수 있다. 이것은 query문으로 person 객체에 대한 요청이 오면, type Person에 대한 내용을 전달해준다는 의미를 갖는다. 데이터 항목의 각 값에 형식이 정해져있고, '!' 표시가 있는 것을 볼 수..
3. 초기 세팅 1 : ES6 코드 적용을 위한 babel-node 설치 개요 import 와 같은 ES6 이상의 문법으로 서버 코드를 작성하기 위해서 자바스크립트 Transpiler인 babel 을 설치한다. 코드 1. 아래와 같은 명령어를 순차적으로 입력한다. npm i nodemon -D npm i @babel/cli -D npm i @babel/core -D npm i @babel/node -D npm i @babel/preset-env -D i : install의 약어, -D : --save-dev의 약어 2. ".babelrc" 파일을 만들고, 아래 설정값을 넣어준다. { "presets": ["@babel/preset-env"] } 3. 아래와 같이 graphQL 초기 세팅을 해준다. nodejs에 비해서 엄청 간단하다. 4. 만약 Error : No schema..
Daily Report Challenge - 20/12/21~20/12/27, 183일차 보호되어 있는 글입니다.
Prm 3 : Subset isSubsetOf 문제 두 개의 배열(base, sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴해야 합니다. 입력 인자 1 : base number 타입을 요소로 갖는 임의의 배열 (base.length false base = [10, 99, 123, 7]; sample = [11, 100, 99, 123]; output = isSubsetOf(base, sample); console.log(output); // --> false Advanced 시간 복잡도를 개선하여, Advanced 테스트 케이스(base, sample의 길이가 70,000 이상)를 통과해 보세요. 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ..
Prm 2 : fibonacci fibonacci 문제 아래와 같이 정의된 피보나치 수열 중 n번째 항의 수를 리턴해야 합니다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1입니다. 그 다음 2번째 피보나치 수부터는 바로 직전의 두 피보나치 수의 합으로 정의합니다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... 입력 인자 1 : n number 타입의 n (n은 0 이상의 정수) 출력 number 타입을 리턴해야합니다. 주의사항 재귀함수를 이용해 구현해야 합니다. 반복문(for, while) 사용은 금지됩니다. 함수 fibonacci가 반드시 재귀함수일 필요는 없습니다. 입출력 예시 let output = fibonacci(0); console.log(output); // --> 0 output = ..
2. graphQL, graphql-yoga 시작 설치 1. 당연히 git부터 삽입! 깃헙 repo 하나 만들기. Readme는 포함되는게 좋음 git init (repo 주소 입력, gitignore에 ) git remote add "깃허브 레포 주소" .gitignore 파일에 넣어줘야하는 리스트 ( 참조 1) 파일 형식은 (참조 2) .env* dist package-lock.json node_modules/ .idea *.log .graphcoolrc **/.DS_Store git branch -M master (main으로 해도 됨. master branch의 이름을 뭘로 할거냐 결정) git add . git commit -m "남길 메시지. first commit" git push origin master git pull origin mas..