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 | 
