반응형

그래프 3

[ SWEA ] 1868. 파핑파핑 지뢰찾기 _ JAVA 문제풀이

풀이 이 문제 풀이는 크게 두 가지 분류로 나뉘지 않았을까 싶습니다. 1. 지뢰의 위치에서 시작하여 방문해야 할 지점들을 체크하는 경우와 2. 주변에 지뢰가 없는 ( 지뢰의 갯수 0 ) 지점의 갯수를 체크하는 경우로 나뉠 것 같습니다. 저 같은 경우에는 2번의 경우로 풀이하였습니다. 1 -> 주변에 지뢰가 없는 지점들 ( 0인 지점 ) 을 BFS를 이용해 해당 지점들을 '#'으로 바꿔주었습니다. --> Check( ) 함수를 이용해 주변에 지뢰가 없는 지역임을 확인하였습니다. --> 이 경우 한 번 클릭해야 하므로 cnt++을 해주었습니다. 2 -> BFS로 0이 되는 인근 지역들을 모두 제거해주었다면 지뢰 ( * ) , 지뢰 갯수 0 ( # ) 이 아닌 ( . ) 의 갯수를 cnt++ 해주어 정답을 찾..

알고리즘 연습 2019.10.16

[ 그래프 ] BFS 연습하기 JAVA

문제 그림과 같은 그래프에 대하여 정점의 개수 N, 연결선의 개수 M이 주어지고 그래프에 대한 연결 정보가 주어질 때, 시작 정점 1에서 BFS 방문 경로를 출력하시오. 풀이 BFS를 연습하는 가장 기본적인 문제입니다. 시작 정점 1을 bfs() 함수 실행할 때 입력해준 뒤, Queue를 이용하여 다음 정점과 연결되어 있고 ( map[x][i] == 1 ), 아직 방문하지 않은 정점이 있다면 ( visited[i] == false ) 큐에 해당 정점을 넣어주고, 더 이상 방문할 정점이 존재하지 않는다면 종료해주었습니다. 연결되어 있는 모든 정점을 너비 우선 탐색(Breadth First Search)으로 방문하는 문제입니다. 방문한 정점에 대하여 중복 방문하는 경우를 방지하기 위해 visited 배열을 ..

알고리즘 연습 2019.10.07

[ 그래프 ] DFS 연습하기 JAVA

문제 그림과 같은 그래프에 대하여 정점의 개수 N, 연결선의 개수 M이 주어지고 그래프에 대한 연결 정보가 주어질 때, 시작 정점 1에서 DFS 방문 경로를 출력하시오. 풀이 DFS를 연습하는 가장 기본적인 문제입니다. 시작 정점 1을 dfs() 함수 실행할 때 입력해준 뒤, Stack을 이용하여 다음 정점과 연결되어 있고 ( map[x][i] == 1 ), 아직 방문하지 않은 정점이 있다면 ( visited[i] == false ) 스택에 해당 정점을 넣어주고, 더 이상 방문할 정점이 존재하지 않는다면 pop()을 해주면서 연결되어 있는 모든 정점을 깊이 우선 탐색(Depth First Search)으로 방문하는 문제입니다. 방문한 정점에 대하여 중복 방문하는 경우를 방지하기 위해 visited 배열을..

알고리즘 연습 2019.10.07
반응형