01-09 04:37
Recent Posts
Recent Comments
Tags
- python
- Naver Cloud
- JOBνκ³
- TSQL
- νμ΄μ
- APIλ§μΌνλ μ΄μ€
- ict곡λͺ¨μ
- SQL
- νλ‘λ³΄λ Έ
- appetizer
- ICTλ©ν λ§
- DATABASE
- μ€ν½λ ν
- Spring
- λ°μ΄ν°λ² μ΄μ€
- μ€ν½μ€λΉ
- νμ΄μ곡λͺ¨μ
- mysql
- μλμ΄λ Έ
- ICT
- DB
- νμ΄μ¬
- μ΄λΈμ
- μ‘νκ³
- μλ°
- Java
- linux
- μ¨μΌλν
- API MarketPlace κΈλ‘λ² μν¬ν°μ¦
- RaspberryPi
- Today
- Total
miinsun
[Algorithm]μκ³ λ¦¬μ¦ μλ°_65 ν λ§ν (BFS νμ©) λ³Έλ¬Έ
π¬ λ¬Έμ μ€λͺ
νμμ ν λ§ν λμ₯μμλ ν λ§ν λ₯Ό 보κ΄νλ ν° μ°½κ³ λ₯Ό κ°μ§κ³ μλ€.
ν λ§ν λ μλμ κ·Έλ¦Όκ³Ό κ°μ΄ 격μ λͺ¨μ μμμ μΉΈμ νλμ© λ£μ΄μ μ°½κ³ μ 보κ΄νλ€.
μ°½κ³ μ 보κ΄λλ ν λ§ν λ€ μ€μλ μ μ΅μ κ²λ μμ§λ§, μμ§ μ΅μ§ μμ ν λ§ν λ€λ μμ μ μλ€. λ³΄κ΄ ν νλ£¨κ° μ§λλ©΄, μ΅μ ν λ§ν λ€μ μΈμ ν κ³³μ μλ μ΅μ§ μμ ν λ§ν λ€μ μ΅μ ν λ§ν μ μν₯μ λ°μ μ΅κ² λλ€.
νλμ ν λ§ν μ μΈμ ν κ³³μ μΌμͺ½, μ€λ₯Έμͺ½, μ, λ€ λ€ λ°©ν₯μ μλ ν λ§ν λ₯Ό μλ―Ένλ€. λκ°μ λ°©ν₯μ μλ ν λ§ν λ€μκ²λ μν₯μ μ£Όμ§ λͺ»νλ©°, ν λ§ν κ° νΌμ μ μ λ‘ μ΅λ κ²½μ°λ μλ€κ³ κ°μ νλ€.
νμλ μ°½κ³ μ 보κ΄λ ν λ§ν λ€μ΄ λ©°μΉ μ΄ μ§λλ©΄ λ€ μ΅κ² λλμ§, κ·Έ μ΅μ μΌμλ₯Ό μκ³ μΆμ΄ νλ€.
ν λ§ν λ₯Ό μ°½κ³ μ 보κ΄νλ 격μλͺ¨μμ μμλ€μ ν¬κΈ°μ μ΅μ ν λ§ν λ€κ³Ό μ΅μ§ μμ ν λ§ν λ€μ μ λ³΄κ° μ£Όμ΄μ‘μ λ, λ©°μΉ μ΄ μ§λλ©΄ ν λ§ν λ€μ΄ λͺ¨λ μ΅λμ§, κ·Έ μ΅μ μΌμλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ.
λ¨, μμμ μΌλΆ μΉΈμλ ν λ§ν κ° λ€μ΄μμ§ μμ μλ μλ€.
π¨ μ μΆλ ₯ μ
- μ λ ₯
- 첫 μ€μλ μμμ ν¬κΈ°λ₯Ό λνλ΄λ λ μ μ M, Nμ΄ μ£Όμ΄μ§λ€. Mμ μμμ κ°λ‘ μΉΈμ μ, N μ μμμ μΈλ‘ μΉΈμ μλ₯Ό λνλΈλ€. λ¨, 2 ≤ M, N ≤ 1,000 μ΄λ€.
- λμ§Έ μ€λΆν°λ νλμ μμμ μ μ₯λ ν λ§ν λ€μ μ λ³΄κ° μ£Όμ΄μ§λ€. μ¦, λμ§Έ μ€λΆν° Nκ°μ μ€μλ μμμ λ΄κΈ΄ ν λ§ν μ μ λ³΄κ° μ£Όμ΄μ§λ€.
- νλμ μ€μλ μμ κ°λ‘μ€μ λ€μ΄μλ ν λ§ν μ μνκ° Mκ°μ μ μλ‘ μ£Όμ΄μ§λ€.
- μ μ 1μ μ΅μ ν λ§ν , μ μ 0μ μ΅μ§ μμ ν λ§ν , μ μ -1μ ν λ§ν κ° λ€μ΄μμ§ μμ μΉΈμ λνλΈλ€.
6 4
0 0 -1 0 0 0
0 0 1 0 -1 0
0 0 -1 0 0 0
0 0 0 0 -1 1
- μΆλ ₯
- μ¬λ¬λΆμ ν λ§ν κ° λͺ¨λ μ΅μ λκΉμ§μ μ΅μ λ μ§λ₯Ό μΆλ ₯ν΄μΌ νλ€.
- λ§μ½, μ μ₯λ λλΆν° λͺ¨λ ν λ§ν κ° μ΅μ΄μλ μνμ΄λ©΄ 0μ μΆλ ₯ν΄μΌ νκ³ , ν λ§ν κ° λͺ¨λ μ΅μ§λ λͺ»νλ μν©μ΄λ©΄ -1μ μΆλ ₯ν΄μΌ νλ€.
4
π» Solution.java
import java.util.*;
class Point {
public int x, y;
Point (int x, int y){
this.x = x;
this.y = y;
}
}
public class Main {
static int[][] box, dis;
static int[] dx = {-1, 0, 1, 0};
static int[] dy = {0, 1, 0, -1};
static int n, m;
static Queue<Point> Q = new LinkedList<>();
public void BFS() {
while(!Q.isEmpty()) {
Point tmp = Q.poll();
for(int i = 0; i < 4; i++) {
int nx = tmp.x + dx[i];
int ny = tmp.y + dy[i];
if(nx >= 0 && nx < n && ny >= 0 && ny < m && box[nx][ny] == 0) {
box[nx][ny] = 1;
Q.offer(new Point(nx, ny));
dis[nx][ny] = dis[tmp.x][tmp.y] + 1;
}
}
}
}
public static void main(String[] args){
Main main = new Main();
Scanner sc = new Scanner(System.in);
m = sc.nextInt();
n = sc.nextInt();
box = new int[n][m];
dis = new int[n][m];
// μ΄κΈ°ν
// μ΅νμλ ν λ§ν μΈμ
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
box[i][j] = sc.nextInt();
if(box[i][j] == 1) Q.offer(new Point(i, j));
}
}
// λμ΄ νμ μ€ν
main.BFS();
// μμ΅μ ν λ§ν μ°ΎκΈ°
// μμ΅μ ν λ§ν κ° μμΌλ©΄ false
boolean flag = true;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
if(box[i][j] == 0) flag = false;
}
}
//κ°μ₯ μ€λ κ±Έλ¦° λ μ°ΎκΈ°
int answer = Integer.MIN_VALUE;
if(flag) {
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
answer = Math.max(answer, dis[i][j]);
}
}
System.out.println(answer);
}
else System.out.println(-1);
sc.close();
return ;
}
}
'Algorithm > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Algorithm]μκ³ λ¦¬μ¦ μλ°_67 μ¨λ¦ μ μ (0) | 2022.03.08 |
---|---|
[Algorithm]μκ³ λ¦¬μ¦ μλ°_66 μ¬λλΌ μμΌλλ (0) | 2022.03.03 |
[Algorithm]μκ³ λ¦¬μ¦ μλ°_64 λ―Έλ‘μ μ΅λ¨ 거리 ν΅λ‘ (BFS) (0) | 2022.03.03 |
[Algorithm]μκ³ λ¦¬μ¦ μλ°_63 λ―Έλ‘μ μ΅λ¨ 거리 ν΅λ‘(DFS) (0) | 2022.03.03 |
[Algorithm]μκ³ λ¦¬μ¦ μλ°_62 λ―Έλ‘ νμ (DFS) (0) | 2022.03.03 |
Comments