https://www.acmicpc.net/problem/1189
1189๋ฒ: ์ปด๋ฐฑํ
์ฒซ ์ค์ ์ ์ R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ๋ถํฐ R+1๋ฒ์งธ ์ค๊น์ง๋ R×C ๋งต์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ '.'๊ณผ 'T'๋ก ๊ตฌ์ฑ๋ ๊ธธ์ด๊ฐ C์ธ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค
www.acmicpc.net
์ด๋ ํ์ง์ ์์ ์์ํด์ ๋ค๋ฅธ ์ง์ ๊น์ง ๊ฐ ์ ์๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ํ์ํด์ผ ํ๋ ๋ฌธ์ ์ด๋ค. ๊ทธ๋ํ ํ์ + ๋ฐฑํธ๋ํน ์ ํ์ ๋ฌธ์ ์ด๋ค. ๋ฐฑํธ๋ํน ๋ฌธ์ ์์๋ ์ฌ๊ท๋ฅผ ํตํ DFS ํ์์ผ๋ก ํธ๋ ๊ฒ์ด ์ ํฉํ๋ค.
๊ทธ๋์ ํ๋ฉด์ ๊ฐ์ ์ ํ์ธ 1987๋ฒ ์ํ๋ฒณ๊ณผ ๋น์ทํ๋ค๊ณ ์๊ฐํ๋ค.
https://www.acmicpc.net/problem/1987
1987๋ฒ: ์ํ๋ฒณ
์ธ๋ก R์นธ, ๊ฐ๋ก C์นธ์ผ๋ก ๋ ํ ๋ชจ์์ ๋ณด๋๊ฐ ์๋ค. ๋ณด๋์ ๊ฐ ์นธ์๋ ๋๋ฌธ์ ์ํ๋ฒณ์ด ํ๋์ฉ ์ ํ ์๊ณ , ์ข์ธก ์๋จ ์นธ (1ํ 1์ด) ์๋ ๋ง์ด ๋์ฌ ์๋ค. ๋ง์ ์ํ์ข์ฐ๋ก ์ธ์ ํ ๋ค ์นธ ์ค์ ํ ์นธ์ผ
www.acmicpc.net
ํ์ด
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int R, C, K;
static int[][] graph;
static boolean[][] visited;
static int[] dx = {-1, 1, 0, 0};
static int[] dy = {0, 0, -1, 1};
static int answer;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
R = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
graph = new int[R][C];
for(int i = 0; i < R; i++) {
String input = br.readLine();
for(int j = 0; j < C; j++) {
graph[i][j] = input.charAt(j);
}
}
//๊ตฌํ
visited = new boolean[R][C];
answer = 0;
dfs(R - 1, 0, 1);
//์ถ๋ ฅ
System.out.println(answer);
}
public static void dfs(int x, int y, int count) {
if(x == 0 && y == C - 1) { //์ง๊น์ง ๋์ฐฉ
if(count == K) { //๊ฑฐ๋ฆฌ๊ฐ K์ธ ๊ฒฝ์ฐ
answer++;
}
return;
}
visited[x][y] = true;
for(int i = 0; i < 4; i++) { //์ํ์ข์ฐ ํ์
int nx = x + dx[i];
int ny = y + dy[i];
if(0 <= nx && nx < R && 0 <= ny && ny < C) { //์ขํ ๋ฒ์ ์์ ์๊ณ
if(!visited[nx][ny] && graph[nx][ny] == '.') { //์ง๊ธ๊น์ง ๋ฐฉ๋ฌธํ ์ ์๊ณ , ๊ฐ ์ ์์ผ๋ฉด
dfs(nx, ny, count + 1);
}
}
}
visited[x][y] = false; //๋ฐฑํธ๋ํน์ ์ํ ๋ฐฉ๋ฌธ ์ฒดํฌ ํด์
}
}
DFS + ๋ฐฑํธ๋ํน์ด๋ผ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆด๊น๋ด ๊ฑฑ์ ํ์๋๋ฐ, ๋ฌธ์ ์์ ์ฃผ์ด์ง ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)๋ก ํฌ์ง ์์์ ์๊ฐ์ด ๋ง์ด ๋์ค์ง ์์๋ค.
๊ฒฐ๊ณผ
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 17069๋ฒ - ํ์ดํ ์ฎ๊ธฐ๊ธฐ 2 (0) | 2022.10.05 |
---|---|
๋ฐฑ์ค 9205๋ฒ - ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ (0) | 2022.10.02 |
๋ฐฑ์ค 18429๋ฒ - ๊ทผ์์ค (0) | 2022.08.28 |
๋ฐฑ์ค 2596๋ฒ - ๋น๋ฐํธ์ง (0) | 2022.08.28 |
2960๋ฒ - ์๋ผํ ์คํ ๋ค์ค์ ์ฒด (0) | 2022.08.21 |