본문 바로가기

JavaScript5

알고리즘 | leet code | Path With Minimum Effort (BFS) 📌 문제 : https://leetcode.com/problems/path-with-minimum-effort/ 문제 당신은 다가오는 하이킹을 준비하는 등산객입니다. heights[row][col]은 셀(row, col)의 높이를 나타내는 행 x 열 크기의 2D 배열 높이가 제공됩니다. 당신은 왼쪽 상단 셀 (0, 0)에 있고 오른쪽 하단 셀 (행-1, 열-1)(즉, 0 인덱스)로 이동하기를 원합니다. 위, 아래, 왼쪽 또는 오른쪽으로 이동할 수 있으며 최소한의 노력이 필요한 경로를 찾고 싶습니다. 경로의 노력은 경로의 연속된 두 셀 사이의 최대 절대 높이 차이입니다. 왼쪽 상단 셀에서 오른쪽 하단 셀로 이동하는 데 필요한 최소 노력을 반환합니다. ✔️입력1 heights = [[1,2,2],[3,8,2.. 2021. 9. 15.
합집합 찾기 Union - Find Set 알고리즘 합집합 찾기(Union and Find Set) 알고리즘 많은 서로소 부분 집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료 구조이다. 두개의 연산을 수행한다. Find 어떤 원소가 주어졌을 때 이 원소가 속한 집합을 반환한다. 어떤 원소가 속한 집합을 대표하는 원소를 반환하는데, 이를 위해 어떤 원소와 각 대표 원소들 간의 파인드 결과를 비교하여 같은 집합임을 판단한다. Union 두 개의 집합을 하나의 집합으로 합친다. 예제 문제 오늘은 새 학기 새로운 반에서 처음 시작하는 날이다. 철수네 반 학생은 N명이다. 철수는 각학생들의 친구관계를 알고 싶다. 모든 학생은 1부터 N까지 번호가 부여되어 있고, 철수에게는 각각 두 명의 학생은 친구 관계가 번호로 표현된 숫자쌍이 주어진다. 만약 (1,.. 2021. 9. 13.
너비 우선 탐색 BFS 알고리즘 - 그래프 탐색 너비 우선 탐색 (BFS)으로 그래프를 탐색해보자. 그래프 탐색 하나의 정점으로 시작하여, 차례대로 모든 정점을 한 번씩 방문하는 것이다. 특정 도시에서 다른 도시로 갈 수 있는지 없는지, 전자 회로에서 특정 단자와 단자가 서로 연결되어 있는지 알아볼 수 있다. 너비 우선 탐색 BFS BFS는 그래프에서 넓게 우선적으로 탐색하는 알고리즘이다. 깊이 우선 탐색 (DFS)은 스택(stack)을 사용하지만, 너비 우선 탐색 (BFS)은 큐(queue)를 사용한다. 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이 방법을 사용한다. DFS보다 빠르지만 복잡하다. 어떤 노드를 방문했는지 검사해야한다. BFS의 동작 방식 자신과 인접한 노드를 전부 queue에 넣는다. queue에 들어있는 노드들을 .. 2021. 9. 11.
깊이 우선 탐색 DFS 알고리즘 - 그래프 탐색 깊이 우선 탐색(DFS)으로 그래프를 탐색해보자. 그래프 탐색 하나의 정점으로 시작하여, 차례대로 모든 정점을 한 번씩 방문하는 것이다. 특정 도시에서 다른 도시로 갈 수 있는지 없는지, 전자 회로에서 특정 단자와 단자가 서로 연결되어 있는지 알아볼 수 있다. 깊이 우선 탐색 DFS DFS는 탐색에서 깊은 것을 우선적으로 탐색하는 알고리즘이다. 너비 우선 탐색 (BFS)는 큐(queue)가 사용되지만, 깊이 우선 탐색 (DFS)는 스택(stack)이 사용된다. 사실 컴퓨터는 함수 호출을 스택의 원리를 사용하기 때문에, 재귀를 사용하면 DFS를 구현할 수 있다. 모든 노드를 방문하고자 하는 경우에 이 방법을 선택한다. 모든 경우의 수를 보기 좋다! BFS보다는 속도가 느리다. 어떤 노드를 방문했는지 검사하.. 2021. 9. 11.