BFS
-
Q. 1012 자바 : 유기농 배추코딩테스트/백준_Java 2023. 3. 30. 22:49
Q. 1012 자바 : 유기농 배추 문제 : boj.kr/1012실버 2 난이도의 문제이다. 이전 글에서 푼 문제인 단지번호 붙이기와 거의 비슷한 문제이다.배추를 재배하는 땅들의 좌표가 주어진다.배추들이 모여있는 곳에는 배추흰지렁이가 한 마리만 있으면 될 때,총 몇 마리의 지렁이가 필요한지 계산하는 문제이다. 지도의 크기 M, N이 주어지는데, 격자형 그래프 순회 문제의 경우 모든 점을 순회해야 하므로 시간 복잡도는 O(NM)이고,문제에서N, M의 최대값은 각각 50이므로시간초과는 걱정하지 않아도 된다.또한 입력을 받을 때 자료형은 0과 1로만 구분되므로 boolean을 사용했다. 문제를 푼 방식은1. 탐색이 가능한 경우(arr[y][x] = true) 방문하고, 이후에 탐색을 진행하며 방문 횟수를 저장..
-
Q. 2667 자바 : 단지번호붙이기코딩테스트/백준_Java 2023. 3. 29. 13:35
Q. 2667 자바 : 단지번호붙이기 문제 : boj.kr/2667 실버 1 난이도의 문제이다. 0과 1로 구성된 격자형 그래프가 주어지고, 1(=집을 의미)이 모여 있는 곳을 단지로 정의했을 때, 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 문제이다. 지도의 크기 N이 주어지는데, 격자형 그래프 순회 문제의 경우 모든 점을 순회해야 하므로 시간 복잡도는 O(N^2)이고,문제에서N의 최대값은 25이므로 시간초과는 걱정하지 않아도 된다. 또한 입력을 받을 때 자료형은 0과 1로만 구분되므로 boolean을 사용했다. 문제를 푼 방식은 1. 탐색이 가능한 경우(arr[y][x] = true) 방문하고, 이후에 탐색을 진행하며 방문 횟수를 저장한다. (이 때 방문한 경우 방문..
-
Q. 1260 자바 : DFS와 BFS코딩테스트/백준_Java 2023. 3. 28. 12:02
Q. 1260 자바 : DFS와 BFS 문제 :boj.kr/1260 실버 2 난이도의 문제이다. 그래프가 주어졌을 때 이를 DFS, BFS로 순회하고 결과를 출력하는 문제이다. 주의해야 할 점은 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문 한다는 내용 때문에 그래프를 입력 받은 뒤 정렬이 한번 필요하다. 정점이 N, 간선이 M으로 주어지므로 시간복잡도는 아래와 같다. 1. 모든 정점에 대한 정렬 - O(N * M log M) 2. DFS, BFS 순회 - O(2 * N * M) (ArrayList를 이용한 그래프 탐색의 경우 정점 * 간선 만큼의 시간복잡도를 가짐) 따라서 두 식을 더하면 약 O(N * M) 정도의 시간복잡도를 가진다고 예상할 수 있다. 이 문제의 경우 정..
-
Q.16973 자바 : 직사각형 탈출(G4)코딩테스트/백준_Java 2023. 1. 4. 14:30
문제 : https://www.acmicpc.net/problem/16973 더보기 크기가 N×M인 격자판에 크기가 H×W인 직사각형이 놓여 있다. 격자판은 크기가 1×1인 칸으로 나누어져 있다. 격자판의 가장 왼쪽 위 칸은 (1, 1), 가장 오른쪽 아래 칸은 (N, M)이다. 직사각형의 가장 왼쪽 위칸은 (Sr, Sc)에 있을 때, 이 직사각형의 가장 왼쪽 위칸을 (Fr, Fc)로 이동시키기 위한 최소 이동 횟수를 구해보자. 격자판의 각 칸에는 빈 칸 또는 벽이 있다. 직사각형은 벽이 있는 칸에 있을 수 없다. 또한, 직사각형은 격자판을 벗어날 수 없다. 직사각형은 한 번에 왼쪽, 오른쪽, 위, 아래 중 한 방향으로 한 칸 이동시킬 수 있다. 직사각형의 크기와 좌표를 주고, 장애물을 피해 원하는 좌표..