목록방문배열 (6)
개발 무지렁이

데스나이트 / BFS 🍥 🎠. 'queue'를 이용해서 'BFS'를 구현할 줄 알아야 한다 => 'queue = deque()' 🎠. queue의 'depth(?)'를 구할 줄 알아야 한다. => 'leng = len(queue)', 'for in 문' from collections import deque N = int(input()) cur_x, cur_y, target_x, target_y = list(map(int, input().split())) dx = [-2, -2, 0, 0, 2, 2] dy = [-1, 1, -2, 2, -1, 1] # arr2d = [[0]* N] * N # visited = [[Fals..

미로 탈출 / 구현문제 🚀 🪅. BFS를 'Queue'를 이용하여 구현할 줄 알아야 한다. => 구현하면서 문제의 조건을 잘 따져서 넣어주어야 한다. 🪅. String의 내장 메서드 '.toCharArray()'를 사용하면 편리하다. 🪅. BFS의 '깊이(or Level)'를 구할 줄 알아야 한다. => queue의 'size()'와 'for문' 이용 import java.util.*; class Solution { char[][] gMaps; int cnt; int[] dx = {-1, 0, 1, 0}; int[] dy = {0, 1, 0, -1}; int flag = 0; public void calExitDist(int[] st..

미로탐색 🪅 시뮬레이션 유형의 문제에서 배열 dx, dy를 이용할 수 있느냐 🪅 문제의 조건에 맞는 범위를 벗어났을 때, 예외를 처리할 수 있느냐 🪅 BFS를 구현할 수 있느냐 => 큐를 이용 📌 int a = arr[i].charAt(j) -'0'; // 문자에서 '0'을 빼고 int 변수에 넣어주면 해당 문자의 유니코드 값이 나온다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Arrays; import java.util.Queue; import java.util.StringTokenizer; /**..

최단거리를 구하는 다익스트라(Dijkstra) 알고리즘 시작노드와 나머지 노드 간의 최단거리를 탐색하는 알고리즘을 다익스트라 알고리즘이라고 한다. (단, 이때 엣지가 모두 양수여야한다.) 🕑 시간복잡도: O(V^2) (V:노드수, E:간선수) [ O(ElogV): 우선순위 큐 이용시 ] 다익스트라(Dijkstra)와 우선순위 큐(Priority Queue) 다익스트라 알고리즘은 '우선순위 큐(Priority Queue)'로 구현하며, '우선순위 큐(Priority Queue)'란 데이터가 새롭게 들어올 때마다 '자동으로 정렬'하는 큐를 말한다. 정렬 기준은 Node클래스의 'compareTo() 함수'를 통해 설정할 수 있다.다익스트라(Dijkst..

그래프의 모든 노드를 탐색하는 BFS(Breadth First Search) 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 시작노드에서 출발하여 레벨 기준으로 자기 레벨을 다 탐색하고 내려가는 과정을 반복하는 것을 ' 넓이우선탐색(BFS) '라고 한다. ** (시작노드 기준으로 가까운 노드를 먼저, 최단경로를 보장) ** 🕑 시간복잡도: O(V+E) (V:정점수, E:간선수) [모든 정점을 한 번씩 방문하고, 그러기 위해 모든 간선을 한 번씩 검사했으니] BFS와 큐 BFS는 큐(Queue)로 구현하며, 큐(Queue)란 먼저 들어온게 먼저 빠지는 형태의 자료구조(FIFO)를 말한다 Queue queue = new ArrayDeque(); BFS 코드 구현 ⚠️ 한번 방문한 노드..

그래프의 모든 노드를 탐색하는 DFS(Depth First Search) 1 -> 2 -> 4 -> 5 -> 3 -> 6 -> 7 시작노드에서 출발하여 리프노드까지 내려가고 부모에게 올라가, 다시 리프노드까지 내려가는 것을 반복하는 과정을 ' 깊이우선탐색(DFS) '라고 한다. 🕑 시간복잡도: O(V + E) (V: 노드 수, E: 간선 수) [모든 정점을 한 번씩 방문하고, 그러기 위해 모든 간선을 한 번씩 검사했으니] DFS와 재귀함수 DFS는 재귀함수로 구현하며, 재귀함수란 '자기 자신'을 Function call(함수 호출)하여 동작하는 방식을 말한다. (종료조건과 재귀적확장이 있어야 한다.)DFS 코드 구현, 백준 1260 DFS 🪅 에지리스트를 인접리스트로 구현할 수 있는가 🪅 ..