이문제 또한 BFS/DFS 두가지 모두로 구현이 가능하다. BFS/DFS 연습을 위해 두가지모두 분석해서 공부해보자 문제 세로와 가로의 길이가 각각 M, N인 방의 지도가 2차원 배열로 주어졌을 때, 1은 장애물을 의미하고 0 이동이 가능한 통로를 의미합니다. 로봇은 지도 위를 일분에 한 칸씩 상하좌우로 이동할 수 있습니다. 로봇의 위치와 목표 지점이 함께 주어질 경우, 로봇이 목표 지점까지 도달하는 데 걸리는 최소 시간을 리턴해야 합니다. 입출력 예시 let room = [ [0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 0], [0, 1, 0, 0, 0, 0], [0, 0, 1, 1, 1, 0], [1, 0, 0, 0, 0, 0], ]; let src = [4, 2]; let dst ..
BFS/DFS 좀더 이해를 하기 위해서 주석을 하나하나 달면서 공부를 해봐야겠다. QUE/ WHILE/isVisited 무조건 쓴다고 생각하면된다. (문법처럼 국룰로 그냥 잡고들어감 ㅠㅠ) bfs를 구하는 공식. 특정한 수가 주어진다면? 예를들어 1정점에서 4정점으로 가는 길이 있는지 없는지 구해라? 1과 4라는 시작점과 도착점이있다. from = 1 to = 4 라고 fix를 하고 시작하자. 1. que만들기 // let que =[ ] 그것은 바로 시작점(왜냐면 나온숫자가 from to밖에 없어용..) let now = que.shift() 7. 조건을 만들어준다. count라던가, 다른무언가. if(from === to) return true; 가다가다가다가 to에 다달았어? 그럼 true. 왜냐 ..

자료구조 파트는 사실 상, 알고리즘 문제 풀이와 직접적인 연관이있는 파트여서 개념이해 -> 문제풀이 위주로 공부해야겠다. 처음 알고리즘 문제를 접했을때 멘붕이왔지만, 레퍼런스 코드를 보며 계속해서 공부해보니 조금 친숙해져서 이제서야 정신차리고 포스팅을 시작. 어려운 개념이여서 천천히 원리를 이해하는게 우선이다 어려워도 포기는 노노 ! 시작해보자 그래프 정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조의 일종 깊이우선탐색 DFS 최대한 깊이 내려간 뒤 더이상 갈곳이 없을때는 옆으로 이동 가계도로 생각해보면 부모님 형제보다 나 먼저 탐색하는거 우리집안부터 정확하게 보는 구조 모든 노드를 방문하고자 하는 경우에 이 방법을 선택함 너비우선탐색 BFS 최대한 넓게 이동한 뒤더이상 갈곳이 ..

1. 개념 줄을 서서 기다리는 구조 Stack과 반대되는 개념으로 먼저 들어간 데이터가 먼저 나옴 *FIFO(First In First Out) 혹은 LILO(Last In Last Out) 컴퓨터 장치들 사이에서 데이터(data)를 주고 받을 때, 각 장치 사이에 존재하는 속도의 차이나 시간 차이를 극복하기 위해 임시 기억 장치의 자료구조로 Queue를 사용 *이 과정을 버퍼(buffer)라고 함 while 반복문과 짝궁 2.구조 const queue = [] queue.push(1) // [1] queue.push(2) // [1, 2] queue.push(3) // [1, 2, 3] queue.push(4) // [1, 2, 3, 4] queue.push(5) // [1, 2, 3, 4, 5] //..

1.개념 데이터를 순서대로 쌓는 자료구조 LIFO(Last In First Out) 혹은 FILO(First In Last Out) 대표적인 예 : 브라우저의 뒤로 가기, 앞으로 가기 기능 2. 특징 재귀 함수와 짝궁 3. 구조 const stack = [] stack.push(1) // [1] stack.push(2) // [1, 2] stack.push(3) // [1, 2, 3] stack.push(4) // [1, 2, 3, 4] stack.push(5) // [1, 2, 3, 4, 5] // LIFO(Last In First Out) stack.pop() // [1, 2, 3, 4] stack.pop() // [1, 2, 3] stack.pop() // [1, 2] stack.pop() // [..

자료구조공부에 앞서 브라우저의 동작원리를 알아두면 좋을것같아서 정리한다. 브라우저 이놈들...컴퓨터놈들...사고방식 자체가 우리와는 다릅니다. ㅠㅠ 웹브라우저? 자바스크립트 코드짠거 실행해주는 엔진! 자바스크립트 해석해주는 애들이다. 웹브라우저 내에는 Stack이라는 공간이있다. 한줄한줄. 스택이라는 공간안에 집어넣고 실행을 시켜준다. 나는 스택! (아래 캡쳐본들은 유튜브에 코딩애플 인강을 들으며 캡쳐한것입니다) 코드를 실행할때 변수같은것을 만난다. Heap 이라는 공간에 변수들이 저장이되어있다. (heap은 이전에 reference 복사에서도 배웠던 개념이다!) 스택은 한개밖에없다. 한번에 코드 한줄밖에 실행을 못한다 =single threaded 언어다 (전문용어로 표현한것) 근데 위에 비동기에서 봤..