알고리즘/DFS
-
9205_맥주마시면서 걸어가기알고리즘/DFS 2020. 1. 28. 09:15
링크 : https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 문제 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. 맥주 한 박스에는 맥주가 20개 들어있다. 목이 마르면 안되기 때문에 50미터에 한 병씩 마시려고 한다. 상근이의 집에서 페스티벌이 열리는 곳은 매우 먼 거리이다. 따라서, 맥주를 더 구매해야 할 수도 있다. 미리 인터넷으로 조사를 해보니 다행히도 맥주를 파는 편의 www.acmicpc.net 접근 - 10000(50*20) 미터 이내에 있는 거리는 도달 할 수 있다 - 출발점으로 부터 각각의 좌표 정보를..
-
11559_puyopuyo알고리즘/DFS 2020. 1. 28. 09:11
링크 : https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 현재 주어진 상황에서 몇연쇄가 되는지 출력하라. (하나도 터지지 않는다면 0을 출력하면 된다.) www.acmicpc.net 접근 - dfs를 통해 인접한 같은 컬러의 뿌요를 탐색해 나간다 - 탐색으로 인해 추가된 뿌요의 갯수가 4개 이상이라면 터뜨린다 - 터뜨린 빈 공간에 나머지 뿌요를 하단으로 밀착시킨다 - 시뮬레이션 + dfs 문제 *주의 - 연쇄의 수를 세는 것이므로 가능한 모든 뿌요를 터뜨린 다임 카운트를 1 증가 시킨다 #include #include using namespace std; struct pos{int y, x;}; vector brokens; typedef vector t..
-
2668_숫자고르기알고리즘/DFS 2020. 1. 27. 09:54
Link : https://www.acmicpc.net/problem/2668 접근 dfs cycle을 이루는 노드들이 몇개인지 확인 한다 1 2 3 4 5 6 7 3 1 1 5 5 4 6 1 - 3 - 1 3 - 1 - 3 5 - 5 pivot 과 숫자를 함께 넘겨 준다 만약 pivot으로 부터 출발하여 노드 값이 pivot과 동일한 숫자가 나온다면 답에 추가 한다 dfs(int pivot, int node){ if(visited[node]) if( pivot == node ) ret.push_back(pivot) else visited[node] = true dfs(pivot, node) } #include #include #include #include #include #define MAX 101 ..