분류 전체보기 (1092) 썸네일형 리스트형 자료구조와 알고리즘 - 재귀 함수 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 1. 재귀 함수란? 자기 자신을 호출하는 함수 재귀 호출(Recursion call) 함수 호출은 Call Stack에 쌓이므로, 스택 자료구조와 유사하게 동작 함수형 프로그래밍에선 루프 구현을 재귀로 구현 무한 루프에 빠지지 않도록 주의 2. 자바스크립트에서의 재귀 함수 콜 스택에 제한 자바스크립트 엔진마다 제한 수는 다름 크롬의 경우 1만개 꼬리 재구(Tail recursion)가 제공되지 않음 성능이 좋지 않음 3. 재귀로 구현해야 편한 알고리즘 Union-Find DFS Backtracking 스택을 통해서 구현할 수도 있지만, 코딩테스트에서는 빨리 푸는 것이 중요하므로 추천하지 않음 .. WIL(22.10.03) 내가 배운것 프로그래머스 문제 풀이 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 차주에 진행할 것 이직 준비 Nomad Coders - React JS 마스터클래스 완강 Effective TypeScript 팀 개발을 위한 Git, GitHub 시작하기 React 공식 문서 읽기 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 앞으로 진행할 것 React 벨로퍼트와 함께하는 모던 리액트 Hook Redux TypeScript OPP Design Pattern Test 시각적 회귀 Refactoring(마틴 파울로) 2판 읽기 외출난이도 리팩터링 [프로그래머스] 가장 먼 노드 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드 // Queue 구현 class Queue { constructor() { this.queue = []; this.front = 0; this.rear = 0; } enqueue(value) { this.queue[this.rear++] = value; } dequeue() { const value = this.queue[this.front]; delete this.queue[this.front]; this.front += 1; return value; } isEmpty(){ return this.rear === this.front; } } function solution(n, edge) { // 트.. 자료구조와 알고리즘 - 그리디 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 1. 그리디란? 매 선택에서 이 순간 가장 최적인 답을 선택하는 알고리즘 최적해를 보장하지는 않음 2. 그리디 알고리즘 특징 보통 최적해를 구하는 알고리즘보다 빠름 크루스칼, 다익스트라 알고리즘 등에 사용 직관적인 문제 풀이에 적합 하나의 개념으로 봐야 함 Reference 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 자료구조와 알고리즘 - BFS, DFS 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 1. BFS, DFS란? BFS(Breadth-First Search) 너비 우선 탐색 그림판의 페인트 DFS(Deptsh-First Search) 깊이 우선 탐색 최단거리 2. BFS 그래프 탐색 알고리즘으로 같은 깊이에 해당하는 정점부터 탐색하는 알고리즘 Queue를 이용하여 구현 시작 지점에서 가까운 정점붜 탐색 V가 정점의 수, E가 간선의 수일 때 BFS의 시간복잡도는 O(V + E) 3. DFS 최대한 깊은 정점부터 탐색하는 알고리즘 Stack을 이용하여 구현 시작 점정에서부터 깊은 것부터 찾음 V가 정점의 수, E가 간선의 수일 때 DFS의 시간복잡도는 O(V + E) Refere.. [프로그래머스] 입국심사 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드 function solution(n, times) { // 모든 사람이 심사를 받는데 걸리는 시간의 최솟값은 1분 ~ (times에서 가장 큰 수 * n)분의 범위에 속함 // 가능한 최솟값 범위의 초기화 let min = 1; let max = Math.max(...times) * n; // 이진탐색 while (min acc + Math.floor(mid / cur), 0); if (sum [프로그래머스] 자동완성 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드 class Node { constructor(value = [0, '']) { this.value = value; this.children = new Map(); } } class Trie { constructor() { this.root = new Node(); } insert(string) { let currentNode = this.root; for (const char of string) { if (!currentNode.children.has(char)) { currentNode.children.set( char, new Node([1 , currentNode.value[1] + char]).. [프로그래머스] 배상 비용 최소화 - JavaScript 풀이 본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다 자바스크립트 코드 class MaxHeap { constructor() { this.heap = [null]; } push(value) { this.heap.push(value); let currentIndex = this.heap.length - 1; let parentIndex = Math.floor(currentIndex / 2); while (parentIndex !== 0 && this.heap[parentIndex] 이전 1 ··· 8 9 10 11 12 13 14 ··· 137 다음