재귀함수를 이용한 문제풀이 base case / recursive case base case : 재귀의 기초로 재귀적으로 문제를 해결할 필요 업시 바로 답을 알 수 있는 경우(=재귀의 탈출 조건)을 의미합니다. recursive case : 재귀적으로 부분문제를 푸는 경우를 의미합니다. 09_take 문제 수(num)와 배열을 입력받아 차례대로 num개의 요소만 포함된 새로운 배열을 리턴해야 합니다. 입력 인자 1 : num number 타입의 정수 (num >= 0) 인자 2 : arr 임의의 요소를 갖는 배열 출력 순차적으로 num 개의 요소로 구성된 배열을 리턴해야 합니다. function take(num, arr) { // base case : num(빼야할 수)가 0이거나 arr에 더는 뺄 요소..
43장 Ajax Ajax(Asynnchronous JavaScript and XML) Ajax란 자바스크립트를 사용하여 브라우저가 서버에서 비동기 방식으로 데이터를 요청하고, 서버가 응답한 데이터를 수신하여 웹페이지를 동적으로 갱신하는 프로그래밍 방식을 말한다. 이전 웹페이지는 화면이 전환되면 서버로부터 새로운 HTML을 전송받아 웹페이지 전체를 처음부터 다시 렌더링해야 됐지만, Ajax를 사용하면 서버로부터 웹페이지의 변경에 필요한 데이터만 비동기 방식으로 전송받아 변경할 부분만 한정적으로 렌더링하는 방식이 가능해진다. Ajax의 장점 변경에 필요한 데이터만 전송받기 때문에 불필요한 데이터 통신이 발생하지 않는다. 변경할 필요가 있는 부분만 렌더링하기 때문에, 화면이 순간적으로 깜빡이는 현상이 발생하지..
42장 비동기 프로그래밍 동기 처리와 비동기 처리 동기 처리 const fun1 = () => {}; const fun2 = () => {}; fun1(); fun2(); 실행 컨텍스트 스택 [] => [전역 실행 컨텍스트] => [전역 실행 컨텍스트, fun1 함수 실행 컨텍스트] => [전역 실행 컨텍스트] => [전역 실행 컨텍스트, fun2 함수 실행 컨텍스트] => [전역 실행 컨텍스트] => [] 위와 같이 함수를 호출하면 함수 코드가 평가되어 함수 실행 컨텍스트가 생성된다. 이 때 생성된 실행 컨텍스트는 실행 컨텍스트 스택(콜 스택)에 푸시(push)되어 함수가 실행되고, 실행이 종료되면 스택에서 팝(pop)되어 제거된다. 자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택을 가지기 때문에 동..
그래프 탐색 정점(node)와 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조를 의미합니다. 그래프를 탐색한다는 것은 하나의 정점으로부터 시작해 차례대로 모든 정점들을 한번씩 방문하는 것입니다. DFS(깊이 우선 탐색, Depth-First Depth) 최대한 깊이 내려간 뒤, 더이상 깊이 갈 곳이 없을 경우 옆으로 이동 루트 노드(1)에서 시작해 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법입니다. 스택/재귀함수를 이용해 표현할 수 있습니다. DFS 작동 방법 탐색 시작 노드(루트 노드)를 큐에 삽입하고 방문 처리를 합니다(boolean 배열을 생성하고, 해당 노드를 true 처리합니다) 스택 최상단 노드의 인접 노드 중 방문하지 않은 노드 하나를 스택에 넣고 방문처리를 합니다..
스택/큐 기본 자료구조만 사용해서 출제되는 문제는 드물지만, 다른 문제(DFS/BFS 등)를 풀 때 기초가 되기 때문에 꼭 알아둬야 한다. 스택(Stack) 선형 자료구조의 일종 LIFO(Last In First Out) 구조 삽입(push) 배열의 가장 뒤에 추가한다 삭제(pop) 가장 나중에 들어온 순서대로 나온다 push 와 pop이 arr.length-1에서 이뤄짐 큐(Queue) 선형 자료구조의 일종 FIFO(First In First Out) 구조 삽입(Enqueue) 배열의 가장 뒤에 추가한다 삭제(Dequeue) 먼저 들어온 순서대로 나온다 삽입은 arr.length-1 / 삭제는 0 인덱스에서 진행된다. 문제 풀이 프로그래머스 Lv1. 같은 숫자는 싫어 https://school.prog..
시간 복잡도 시간 복잡도와 로직의 수행 시간은 비례하므로 시간 복잡도 수치가 작을수록 효율적인 알고리즘임을 의미합니다. 시간 복잡도는 주로 Big-O로 표기된다. Big-O 표기법은 최악의 경우를 고려하는 표기법으로 ‘이 정도 시간까지 걸릴 수 있다’를 고려하는 표기법이다. 시간 복잡도 - 나무위키 이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권 namu.wiki
노션에서 티스토리로 개발자들 사이에서 많이 쓰인다고도 하고, 주위 사람들이 추천을 많이 해줘서 노션으로 블로깅을 시작했었다. 필기를 노트와 펜으로만 하던 나로서는 블로그로 필기를 하는 행위 자체가 신세계였다. 손으로 필기하는 것보다 작성하는 속도도 훨씬 빠르고 기능도 얼마나 많던지.... 블로깅이 처음인지라 매우 만족하면서 사용했지만, 블로깅을 시작해서 그런지 자료 검색을 통해 들어간 블로그와 동기들이 사용하는 블로그들이 자꾸 눈에 들어왔다. 블로그 디자인도 그렇고, 비슷한 내용을 작성해도 더 눈에 잘 들어와서 티스토리로 이사를 해야겠다는 결심을 하게 되었다. 전에 작성한 글들은 어떻게 옮기지? 사실 이게 가장 큰 문제였다. 노션에 이미 2달정도 작성한 글들이 있기 때문에 이 글들을 전부 옮길 생각에 너..
🏅완주할 수 있는 속도와 자세 유지하기🏅 드디어 고대하던 코드스테이츠 프론트엔드 부트 캠프 시작이다. 내가 원하는 목표를 달성할 수 있도록 최선을 다하는 일만 남았다. 💪 나의 다짐 부트캠프에 오기까지 내가 걸어온 길 나는 컴퓨터공학을 전공하고, 프론트엔드 개발자로 약 1년간 근무를 했다. 근무했던 회사에서 단순 퍼블리싱 분야 업무를 했고, 웹 개발자로 성장하기에 어려운 환경이라는 생각이 들어 퇴사하게 되었다. 퇴사 후 유튜브와 인프런에서 강의를 들으며 공부를 했지만, 강의만 듣는 것에는 한계를 느껴 체계적인 학습 커리큘럼과 협업/프로젝트를 경험할 수 있는 코드스테이츠 부트 캠프에 지원하게 되었다. 나의 목표 프론트엔드 개발에 필요한 기초 탄탄하게 학습하기 실무자 면접 때 나올만한 모든 질문에 대답할 수..