본문 바로가기

BFS5

[백준 2667] 단지번호 붙이기 BFS 문제입니다. 미로 탐색이랑 비슷하고 문제에 있는 조건에 맞춰서 작성해주시면 됩니다. 일단 아파트단지용 배열과 방문 체크용 배열을 생성해 입력을 받아주시고 아파트 배열을 처음부터 끝까지 돌리면서 처음 걸리는 1의 좌표부터 BFS를 시작합니다. BFS가 호출이되면 (전체 단지 수 + 1) 를 해주시고, BFS를 돌리면서 붙어있는 아파트 갯수를 계산해 리턴해줘서 ArrayList에 넣었습니다. 그리고 ArrayList를 sort하고 전체단지수를 출력 후 ArrayList를 하나씩 출력했습니다. 2019. 4. 9.
[백준 1697] 숨바꼭질 BFS 문제입니다. 큐를 생성해 N을 넣고 현재 점 N을 기준으로 N-1 N+1 N*2 를 모두 구한뒤 이것이 범위를 벗어나지 않으면서 처음 탐색된 값일경우 배열의 현재위치값 + 1 해주고 큐에 넣어줍니다. 이것을 M이 될때까지 반복. 2019. 4. 9.
[백준 7576] 토마토 BFS 문제입니다. 코드가 생각보다 길어져서 주석을 달았습니다. 기본적으론 미로탐색과 같은 방법으로 진행하며 중간중간 해당 문제에 대한 조건들을 처리해주시면 됩니다 티스토리 스킨을 변경했더니 SystaxHighlighter가 적용되지 않아 이제부터 Gist로 업로드 하겠습니다. 2019. 4. 9.
[백준 2178] 미로탐색 대표적인 BFS 문제입니다. 좌표 저장용 노드 클래스, 미로를 저장할 배열, 방문했는지 여부용 배열을 사용하고 반복문으로 상하좌우 탐색용 배열2개를 사용합니다. 1. 입력받은 미로로 부터 1, 1을 방문체크 하고 큐에 넣어 시작 2. 큐에 원소가 있을동안 큐에서 하나 빼고 poll한 노드의 상하좌우 좌표를 체크하고 이것이 2-1. 미로의 크기를 벗어나지 않음 2-2. 미로의 길임 2-3. 길이 아직 방문이 안되있음 3. 이 세가지 조건을 만족할 경우 다음 좌표를 방문체크 후, 미로의 값을 1 늘려주고 해당 좌표를 가진 노드를 생성해 큐에 넣어줍니다. 2~3을 반복. public class Q2178 { public static int[] nX = {-1, 0, 1, 0}; public static int.. 2019. 4. 8.