-
[백준 2667 : 단지번호 붙이기] Java, BFS백준 알고리즘 2018. 11. 14. 19:53
Queue를 이용하여 BFS로 풀었습니다! Main함수에서는,1) 단지를 입력 받습니다2) 단지 배열 값이 1이고, 이전에 방문한 적 없는 값은 BFS 함수를 호출합니다3) BFS를 호출할 때마다 count를 해서 그 값을 총 단지수로 출력해줍니다.4) ArrayList와 Collection을 이용하여 값을 오름차순으로 정렬해 각 단지 내 집의 수를 출력해줍니다. BFS함수에서는,1) 메인에서 전해준 값을 큐에 넣고, visit 체크를 합니다.2) 그 값의 주변(상하좌우)을 살피며 값이 1이고 방문한 적 없는 값을 Queue에 넣습니다.그리고 local_cnt를 증가하며 한 단지 내의 집의 개수를 카운트 합니다. 3) local_cnt를 ArrayList에 추가합니다. 풀면서 번거로웠던 점은 map을 입..
-
[백준1697 : 숨바꼭질] Java,BFS백준 알고리즘 2018. 11. 10. 17:23
문제는 결국 입력1부터 입력2까지의 최소 거리를 구하는 것입니다. 최단 거리인 만큼 BFS로 풀어보았습니다. 1. 수빈이의 위치(조건이 3가지 존재)를 큐에 넣어가면서 이동2. 배열에 방문 여부를 체크해서 중복되지 않도록 하기3. 이동할때마다 1씩 더해서 거리체크하기 수빈이의 위치가 변하는 조건은 현재 위치-1 , 현재 위치+1, 현재 위치*2입니다. BFS에서 현재 위치가 입력2와 같으면 거리를 출력해주도록 했습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364package mnth_11;import java.util.Scanner;i..
-
[백준 2606:바이러스]Java, bfs백준 알고리즘 2018. 11. 10. 00:08
bfs를 이용해서 푼 코드입니다. 1. 행렬로 네트워크를 나타내어 줍니다.2. bfs(1)을 합니다. 시작노드를 큐에 넣고 이어진 그래프를 탐색하게 됩니다. 탐색하는 과정은큐에 데이터가 있으면 dequeue해서 이전에 큐에 넣었던 노드와현재 탐색 중인 노드가 연결되어 있는지 체크하게 됩니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758package mnth_11;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner; public class BJ2606_BFS { static i..
-
[백준 2606:바이러스]Java, Dfs백준 알고리즘 2018. 11. 9. 23:22
오랜만에 알고리즘 문제를 풀었더니 간단한 문제도 잘 안 풀려서 허우적거리고 있네요. 흐흐 2606 문제는 dfs로 전체를 탐색해주면 되는 문제입니다. 1. 연결된 네트워크를 배열로 표현하고2. 첫번째 컴퓨터에서 dfs를 호출합니다.3. 첫번째 컴퓨터와 연결된 다른 컴퓨터에서 또 dfs를 호출합니다. 물론 전에 방문하지 않은 네트워크라는 조건을 달아줘야 합니다!저는 visited라는 1차원 배열을 써서 방문을 체크해주었습니다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647package mnth_11;import java.util.Scanner; public class BJ2606_DFS { stati..