알고리즘/BFS
-
[백준 13913] 숨바꼭질 4알고리즘/BFS 2019. 12. 31. 20:19
문제 바로가기 Type : BFS 접근 (1) 수빈이가 동생을 찾기 위한 가장 빠른 경로를 찾기 위해 BFS 탐색을 실시한다. (2) 한 지점을 방문할때 마다 부모 정보를 저장 한다. (3) 부모의 배열을 뒤집어 출력 한다. 자로 구조 (1) arr[MAX] : 탐색을 위한 1차원 배열 (2) parent[MAX] : 부모 정보를 저장할 1차원 배열 (3) map : 탐색 거리를 저장할 map 플로우 차트 (1) BFS 탐색 (2) 경로 출력 구현 코드 #include #include #include #include #include #include #define FAIL "BARK" #define MAX 20001 using namespace std; //자료 구조 선언 map numByRemain; b..
-
[백준 15558] 점프게임알고리즘/BFS 2019. 12. 13. 17:29
문제 바로가기 Type : BFS 접근 문제에 주어진 조건을 잘 지키면서 일반적인 BFS와 유사한 탐색을 진행 한다. 조건 1. 시간이 지날때마다 한칸이 사라지므로 시도횟수가 n을 넘어서면 안된다. 조건 2. x>=n 이다. 배열의 시작은 0부터 시작되므로 n과 동일하기만 해도 범위를 벗어난 것이다. 조건 3. 시간이 지나 사라지거나 0이 표시된 위치로는 접근 할 수 없다. 조건 4. 이미 방문한 곳은 다시 방문 할 수 없다. 구조체 선언 위치 (y, x)와 시간(time)을 저장할 수 있는 구조체를 선언한다. 탐색 진행 탐색이 끝나거나 게임에 성공할때까지. 큐로부터 walker 객체를 꺼낸다 문제에 주어진 동작에 따라 3가지의 새로운 walker 객체를 만든다. 만약 새 walker의 x가 n보다 크거..
-
[백준 6087] 레이저통신알고리즘/BFS 2019. 12. 9. 21:56
Type : BFS 접근 위치, 거울의 갯수, 방향을 저장할 수 있는 구조체를 선언 한다. 거울의 최소 설치 갯수를 저장할 수 있는 2차원배열을 선언한다 다중의 구조체를 동시에 탐색시켜 최소의 Install 갯수를 구한다. 탐색 과정 중 방향이 달라진다면 거울을 설치 한다. BFS 탐색 조건 설정 (1) 지정된 범위 (2) 벽이 아닌 지점 (3) 더 많은 수의 거울을 설치 해야 하는지 주의사항 1. 동일한 수의 거울을 설치할 때도 탐색을 실행 해야 한다. 2. 거울의 수를 증가 시킬 때 새로운 변수를 사용해야 한다. 현재 구조체의 거울 설치수를 변경하면 안된다. 코드 구현 #include #include #include #include #define INF 987654321 #define MAX 101 ..
-
[백준 4991]로봇청소기알고리즘/BFS 2019. 12. 9. 21:50
Type : BFS + DFS 접근 BFS를 통해 로봇, 각 쓰레기 간의 거리를 구한다. (1) 로봇 -> 쓰레기 1, 쓰레기 2, 쓰레기 3 (2) 쓰레기 1 -> 로봇, 쓰레기 2, 쓰레기 3 (3) 쓰레기 2 -> 로봇, 쓰레기 1, 쓰레기 3 (4) 쓰레기 3 -> 로봇, 쓰레기 1, 쓰레기 2 각 지점간의 거리를 MST Table로 생성한다. R T1 T2 T3 R 0 T1 0 T2 0 T3 0 Robot에서 출발하여 어떤 순서로 가야 최소한의 거리로 모든 쓰레기를 치울 수 있는지 구한다 DFS 순열 생성을 통해 각기 다른 순서를 만들어 낸다 MST Table의 거리를 순서에 따라 합산한다. 합산한 것들 중 최소한의 값을 구한다. 주요 포인트 무조건 가까운 지점만 찾는다고 최적의 거라기 구해지진..