https://www.acmicpc.net/problem/1987
๋ฌธ์
์ธ๋ก R์นธ, ๊ฐ๋ก C์นธ์ผ๋ก ๋ ํ ๋ชจ์์ ๋ณด๋๊ฐ ์๋ค. ๋ณด๋์ ๊ฐ ์นธ์๋ ๋๋ฌธ์ ์ํ๋ฒณ์ด ํ๋์ฉ ์ ํ ์๊ณ , ์ข์ธก ์๋จ ์นธ (1ํ 1์ด) ์๋ ๋ง์ด ๋์ฌ ์๋ค.
๋ง์ ์ํ์ข์ฐ๋ก ์ธ์ ํ ๋ค ์นธ ์ค์ ํ ์นธ์ผ๋ก ์ด๋ํ ์ ์๋๋ฐ, ์๋ก ์ด๋ํ ์นธ์ ์ ํ ์๋ ์ํ๋ฒณ์ ์ง๊ธ๊น์ง ์ง๋์จ ๋ชจ๋ ์นธ์ ์ ํ ์๋ ์ํ๋ฒณ๊ณผ๋ ๋ฌ๋ผ์ผ ํ๋ค. ์ฆ, ๊ฐ์ ์ํ๋ฒณ์ด ์ ํ ์นธ์ ๋ ๋ฒ ์ง๋ ์ ์๋ค.
์ข์ธก ์๋จ์์ ์์ํด์, ๋ง์ด ์ต๋ํ ๋ช ์นธ์ ์ง๋ ์ ์๋์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ง์ด ์ง๋๋ ์นธ์ ์ข์ธก ์๋จ์ ์นธ๋ ํฌํจ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ R๊ณผ C๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. (1 ≤ R,C ≤ 20) ๋์งธ ์ค๋ถํฐ R๊ฐ์ ์ค์ ๊ฑธ์ณ์ ๋ณด๋์ ์ ํ ์๋ C๊ฐ์ ๋๋ฌธ์ ์ํ๋ฒณ๋ค์ด ๋น์นธ ์์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ง์ด ์ง๋ ์ ์๋ ์ต๋์ ์นธ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main_BOJ_1987_์ํ๋ฒณ {
static int R,C,ans;
static char[][] board;
static boolean[][] isVisited;
static boolean[] isVisitedChar;
static int[] dr = {-1, 0, 0, 1};
static int[] dc = {0, -1, 1, 0};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());
R = Integer.parseInt(stringTokenizer.nextToken());
C = Integer.parseInt(stringTokenizer.nextToken());
ans = 0;
board = new char[R][C];
isVisited = new boolean[R][C];
isVisitedChar = new boolean[26];
for(int i = 0 ; i < R; i++){
board[i] = br.readLine().toCharArray();
}
isVisited[0][0] = true;
isVisitedChar[board[0][0] - 'A'] = true;
DFS(0, 0, 1);
System.out.println(ans);
}
private static void DFS(int r, int c, int cnt) {
ans = ans < cnt ? cnt : ans;
for(int i = 0 ; i < 4; i++){
int nr = r + dr[i];
int nc = c + dc[i];
if(nr < 0 || R <= nr || nc < 0 || C <= nc || isVisited[nr][nc]) continue;
if(!isVisitedChar[board[nr][nc] - 'A']){
isVisitedChar[board[nr][nc] - 'A'] = true;
isVisited[nr][nc] = true;
DFS(nr, nc, cnt+1);
isVisitedChar[board[nr][nc] - 'A'] = false;
isVisited[nr][nc] = false;
}
}
return;
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 2729 ] ์ด์ง์ ๋ง์ ( ์๋ฐ / JAVA ) (0) | 2021.10.19 |
---|---|
[ ๋ฐฑ์ค / BOJ 2469 ] ์ฌ๋ค๋ฆฌ ํ๊ธฐ ( ์๋ฐ / JAVA ) (0) | 2021.10.19 |
[ ๋ฐฑ์ค / BOJ 20168 ] ๊ณจ๋ชฉ ๋์ฅ ํธ์ - ๊ธฐ๋ฅ์ฑ ( ์๋ฐ / JAVA ) (0) | 2021.10.19 |
[ ๋ฐฑ์ค / BOJ 2374 ] ๊ฐ์ ์๋ก ๋ง๋ค๊ธฐ ( JAVA / ์๋ฐ ) (0) | 2021.10.11 |
[ ๋ฐฑ์ค / BOJ 1080 ] ํ๋ ฌ ( JAVA / ์๋ฐ ) (0) | 2021.10.11 |