๋ฌธ์
https://www.acmicpc.net/problem/3109
3109๋ฒ: ๋นต์ง
์ ๋ช ํ ์ ๋นต์ฌ ๊น์์ ์ ๋นต์ง์ ์ด์ํ๊ณ ์๋ค. ์์ ์ด์ ๋นต์ง์ ๊ธ๋ก๋ฒ ์ฌ์ ์๊ธฐ๋ฅผ ํผํด๊ฐ์ง ๋ชปํ๊ณ , ๊ฒฐ๊ตญ ์ฌ๊ฐํ ์ฌ์ ์๊ธฐ์ ๋น ์ก๋ค. ์์ ์ด๋ ์ง์ถ์ ์ค์ด๊ณ ์ ์ฌ๊ธฐ์ ๊ธฐ ์ง์ถ์ ์ดํด๋ณด๋
www.acmicpc.net
ํ์ด
์๊ณ ๋ฆฌ์ฆ: ๋ฐฑํธ๋ํน, DFS
0ํ์์๋ ์๋ฌด๊ณณ์์๋ ์ถ๋ฐ ํ ์ ์์ผ๋ฏ๋ก R๊ธธ์ด๋งํผ ๋๋ฉฐ ๊น์ด์ฐ์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํํ๋ค.
ํ์์ ๊ธฐ์ ์กฐ๊ฑด์ ํ์ฌ Column์ด ๋ง์ง๋ง Column์ผ๋.
๊ทธ ์ธ์๋ ์ผ๋ฐฉํ์์ ํ์ฌ ๊ฐ ๊ณณ์ ์ ํ๋ค.
์ด ๋, ์ง๋์จ ๊ณณ์ 'O'๋ก ํ์ํ์ฌ ๋ค์ ์ง๋๊ฐ ์ ์๊ฒ ํ๋ค.
ํ๋์ ํ์ดํ๋ผ์ธ์ด ๋ง๋ค์ด์ก์ ๋(๊ธฐ์ ์กฐ๊ฑด) ํด๋น ์นธ์์ ๋ค์ ํ์์ด ์ด๋ฃจ์ด์ง์ง ์๋๋ก Flag๋ฅผ ์ฌ์ฉํ๋ค. (๋ฐฑํธ๋ํน)
์ฌ์ค ์์ง ,, ๋ฐฑํธ๋ํน ๊ฐ๋ ์ ํ์คํ ์ ๋ชจ๋ฅด๊ฒ ๋ค ,, ๋ ์ผ๋ฐ ์กฐํฉ ์๊ณ ๋ฆฌ์ฆ์ด๋ DFS์ฐจ์ด๋ ๋ชจ๋ฅด๊ฒ ๋ค ,,
๊ฐ๊ธธ์ด ๋๋ฌด ๋ฉ๋ค,, เฎเฏฐเฎ
์ฝ๋
import java.io.*;
import java.util.*;
public class Main{
static int R, C, cnt;
static char[][] map; //๋งต ์ ๋ณด ์ ์ฅ
static int[] di = {-1,0,1}; //์ฐ์, ์ฐ, ์ฐํ
static int[] dj = {1,1,1};
static boolean flag = false; //๋ฐฑํธ๋ํน flag
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
R = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
map = new char[R][C];
cnt = 0;
for(int i =0 ; i < R ; i++) {
String str = br.readLine();
for(int j =0 ; j < C ; j++) {
map[i][j] = str.charAt(j);
}
}
for(int i = 0 ; i< R ; i++) { //0ํ์์ R-1ํ๊น์ง ํ์
flag = false;
setPipe(i, 0); //๊น์ด ์ฐ์ ํ์
}
System.out.println(cnt);
}
private static void setPipe(int rowNo, int colNo) {
if(colNo == C-1) { //๊ธฐ์ ์กฐ๊ฑด
map[rowNo][colNo] = 'O';
flag = true; //ํด๋น ๊ฒฝ๋ก์์์ ๊ฒฝ์ฐ์ ์ ํ์์ด ์ข
๋ฃ๋์์์ ์๋ฆผ
cnt++;
return;
}
for(int i =0 ; i < 3 ; i++) { //์ผ๋ฐฉํ์
int ni = rowNo + di[i];
int nj = colNo + dj[i];
if(0<=ni&&ni<R && 0<=nj&&nj<C && map[ni][nj] == '.') {
map[rowNo][colNo] = 'O';
setPipe(ni, nj); //๊น์ด ์ฐ์ ํ์
if(flag) return; //ํด๋น ๊ฒฝ๋ก์์ ๋์ด์ ํ์ํ์ง ์๋๋ก
}
}
}
}
'๐ ์๊ณ ๋ฆฌ์ฆ > GraphTraversal' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 3184๋ฒ ์ (Java) (0) | 2022.02.16 |
---|---|
[๋ฐฑ์ค] 5427๋ฒ ๋ถ (Java) (0) | 2022.02.08 |
[๋ฐฑ์ค] 2606๋ฒ ๋ฐ์ด๋ฌ์ค (Java) (0) | 2021.08.24 |
[๋ฐฑ์ค] 2667๋ฒ ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (Java) (0) | 2021.08.24 |
[๋ฐฑ์ค] 10026๋ฒ ์ ๋ก์์ฝ(Java) (0) | 2021.08.20 |