๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€ ์Šคํ„ฐ๋”” 12์ฃผ์ฐจ] 14442๋ฒˆ ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ 2 ๊ณจ๋“œ3 - ์ž๋ฐ”(JAVA)/ BFS/ 3์ฐจ์›๋ฐฐ์—ด

 

๐Ÿ“‘ ๋ฌธ์ œ

https://www.acmicpc.net/problem/14442

 

14442๋ฒˆ: ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ 2

์ฒซ์งธ ์ค„์— N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์— M๊ฐœ์˜ ์ˆซ์ž๋กœ ๋งต์ด ์ฃผ์–ด์ง„๋‹ค. (1, 1)๊ณผ (N, M)์€ ํ•ญ์ƒ 0์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž.

www.acmicpc.net

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

๋ฌธ์ œ

N×M์˜ ํ–‰๋ ฌ๋กœ ํ‘œํ˜„๋˜๋Š” ๋งต์ด ์žˆ๋‹ค. ๋งต์—์„œ 0์€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ด๊ณ , 1์€ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ๋ฒฝ์ด ์žˆ๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹น์‹ ์€ (1, 1)์—์„œ (N, M)์˜ ์œ„์น˜๊นŒ์ง€ ์ด๋™ํ•˜๋ ค ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜๋ ค ํ•œ๋‹ค. ์ตœ๋‹จ๊ฒฝ๋กœ๋Š” ๋งต์—์„œ ๊ฐ€์žฅ ์ ์€ ๊ฐœ์ˆ˜์˜ ์นธ์„ ์ง€๋‚˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๋งํ•˜๋Š”๋ฐ, ์ด๋•Œ ์‹œ์ž‘ํ•˜๋Š” ์นธ๊ณผ ๋๋‚˜๋Š” ์นธ๋„ ํฌํ•จํ•ด์„œ ์„ผ๋‹ค.

๋งŒ์•ฝ์— ์ด๋™ํ•˜๋Š” ๋„์ค‘์— ๋ฒฝ์„ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข€ ๋” ๊ฒฝ๋กœ๊ฐ€ ์งง์•„์ง„๋‹ค๋ฉด, ๋ฒฝ์„ K๊ฐœ ๊นŒ์ง€ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜์—ฌ๋„ ๋œ๋‹ค.

ํ•œ ์นธ์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์€ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ธ์ ‘ํ•œ ์นธ์ด๋‹ค.

๋งต์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•ด ๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์— M๊ฐœ์˜ ์ˆซ์ž๋กœ ๋งต์ด ์ฃผ์–ด์ง„๋‹ค. (1, 1)๊ณผ (N, M)์€ ํ•ญ์ƒ 0์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 

 

 

 

 

โœ’๏ธ ํ’€์ด

 ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ(https://www.acmicpc.net/problem/2206) ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ์™€ ๊ฑฐ์˜ ์œ ์‚ฌํ•˜๋‹ค.

 ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋ฅผ ๋จผ์ € ํ’€๊ณ  ์™”๋”๋‹ˆ ๊ทธ๋ƒฅ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ์ˆ˜์ •ํ•˜๋Š” ์ •๋„..?

 

๐Ÿ’ก 3์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค.

 ์ด๋ฏธ ํ•œ ๋ฒˆ ์ง€๋‚˜์˜จ ๊ธธ์ด๋ผ๋„, ๋ฒฝ์„ ๋ถ€์ˆ˜๊ณ  ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฐฐ์—ด์„ ๋ฒฝ์„ ๋ถ€์ˆœ ํšŸ์ˆ˜๊นŒ์ง€ ํ•จ๊ป˜ ๋‹ด๋„๋ก 3์ฐจ์›์œผ๋กœ ๋‘์–ด์•ผํ•œ๋‹ค. 

 

โœ”๏ธ ํŠน์ • ์œ„์น˜์—์„œ ์‚ฌ๋ฐฉํƒ์ƒ‰์„ ํ•˜์—ฌ BFS๋กœ ์ด๋™์„ ํ•  ๋•Œ

 1. ๋ฒฝ์ด ์•„๋‹Œ ์œ„์น˜๋ผ๋ฉด: ๊ทธ๋ƒฅ ์ด๋™ํ•œ๋‹ค.

 2. ๋ฒฝ์„ ๋งŒ๋‚ฌ๋Š”๋ฐ ๋ถ€์ˆ  ์ˆ˜ ์žˆ๋Š” ํšŸ์ˆ˜๊ฐ€ ๊ฝ‰ ์ฐผ๋‹ค๋ฉด: ๋„˜์–ด๊ฐ„๋‹ค.

 2. ๋ฒฝ์„ ๋งŒ๋‚ฌ๊ณ  ๋ถ€์ˆ  ์ˆ˜ ์žˆ๋Š” ํšŸ์ˆ˜๊ฐ€ ์•„์ง ๋‚จ์•˜๋‹ค๋ฉด: ๋ฒฝ์„ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•œ๋‹ค.

 

 

 

 

 

 

 

 

๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ: ์ž๋ฐ”(Java)

public class Main_๋ฐฑ์ค€_14442_๋ฒฝ๋ถ€์ˆ˜๊ณ ์ด๋™ํ•˜๊ธฐ2_๊ณจ๋“œ3 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());//๋ถ€์ˆ  ์ˆ˜ ์žˆ๋Š” ๋ฒฝ ๊ฐœ์ˆ˜
		int[][] map = new int[N][M];
		for (int i = 0; i < N; i++) {
			String str = br.readLine(); 
			for (int j = 0; j < M; j++) {
				map[i][j] = str.charAt(j)-'0';
			}
		}//input
		
		int result = -1;
		int[] dr = {1,-1,0,0};
		int[] dc = {0,0,1,-1};
		Queue<int []> queue = new LinkedList<int[]>();
		boolean[][][] visited = new boolean[N][M][K+1];
		
		//์‹œ์ž‘์œ„์น˜
		visited[0][0][0] = true;
		//r,c,d,k
		queue.offer(new int[] {0,0,1,0});
		
		while(queue.size()>0) {//BFS
			int[] cur = queue.poll();
			int r = cur[0];
			int c = cur[1];
			int d = cur[2];
			int k = cur[3];
			
			// ๋ชฉ์ ์ง€์— ๋„๋‹ฌ
			if(r==N-1 && c==M-1) {
				result = d;
				break;
			}
			
			// ์‚ฌ๋ฐฉํƒ์ƒ‰
			for (int i = 0; i < 4; i++) {
				int nr = r + dr[i];
				int nc = c + dc[i];
				
				if(nr<0||nc<0||nr>=N||nc>=M|| visited[nr][nc][k]) continue;
				if(map[nr][nc]==0) {//๋ฒฝ์„ ์•ˆ ๋ถ€์ˆ  ๋•Œ
					visited[nr][nc][k]=true;
					queue.offer(new int[] {nr,nc,d+1,k});
				}
				// ๋ฒฝ์„ ๋ถ€์ˆ  ๊ธฐํšŒ๊ฐ€ ๋‚จ์•˜๊ณ  && ๋ถ€์ˆด๋„ ๋ฐฉ๋ฌธํ•œ ์ ์ด ์•„๋‹ ๋•Œ
				else if(k<K && !visited[nr][nc][k+1]) {
					visited[nr][nc][k+1] = true;
					queue.offer(new int[] {nr,nc,d+1,k+1});
				}
			}
		}
		
		System.out.println(result);
	}//end of main
}//end of class

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ’Ž ๐Ÿ’Ž ๐Ÿ’Ž

 

 

๏ผฐ๏ฝ๏ฝ“๏ฝ”๏ฝ…๏ฝ„ ๏ผข๏ฝ™ ๏ผณ๏ผก๏ผน

๐˜›๐˜ฉ๐˜ข๐˜ฏ๐˜ฌ๐˜ด ๐˜ง๐˜ฐ๐˜ณ ๐˜ณ๐˜ฆ๐˜ข๐˜ฅ๐˜ช๐˜ฏ๐˜จ