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

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14wL9KAGkCFAYD 

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com


1. ๋ฌธ์ œ ์š”์•ฝ

์ถœ๋ฐœ์ง€์  2์—์„œ ๋„์ฐฉ์ง€์  3๊นŒ์ง€ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด 1, ๋„์ฐฉํ•  ์ˆ˜ ์—†์œผ๋ฉด 0์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

2. ํ’€์ด

dfs๋ฌธ์ œ์ด๋‹ค.

์ถœ๋ฐœ์ง€์ ์„ sy, sx ๋„์ฐฉ์ง€์ ์„ ey,ex๋กœ ๋ฐ›์•„์ฃผ๊ณ  ๊ธฐ์ €์กฐ๊ฑด์œผ๋กœ y==ey && x==ex์ด๋ฉด ans=1 ๋„ฃ์–ด์ฃผ๊ณ  returnํ•ด์ฃผ์—ˆ๋‹ค.

 

3. ์ฝ”๋“œ

๋”๋ณด๊ธฐ

import java.io.*;
import java.util.*;

public class SW_1227_๋ฏธ๋กœ2 {

	static int[][] map;
	static int ans, sy, sx, ey, ex;
	
	static int[] dy= {-1,1,0,0};
	static int[] dx= {0,0,-1,1};
	static boolean[][] visited;
	
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
		for (int tc=1; tc<=10; tc++) {
			int T = Integer.parseInt(br.readLine());
			//1:๋ฒฝ 0:๊ธธ 2:์ถœ๋ฐœ 3:๋„์ฐฉ
			map = new int[100][100];
			visited = new boolean[100][100];
			for (int i=0; i<100; i++) {
				String s = br.readLine();
				for (int j=0; j<100; j++) {
					map[i][j] = s.charAt(j) - '0';
					if (map[i][j] == 2) {
						sy = i;
						sx = j;
					} else if (map[i][j] == 3) {
						ey = i;
						ex = j;
					}
				}
			} //์ž…๋ ฅ ๋
			
			ans = 0;
			dfs(sy, sx);
			System.out.println("#"+tc+" "+ans);
		}
	}
	
	static void dfs(int y, int x) {
		visited[y][x] = true;
		if (y==ey && x==ex) {
			ans = 1;
			return;
		}
		
		for (int d=0; d<4; d++) {
			int ny= y+dy[d];
			int nx= x+dx[d];
			if (ny<0 || ny>=100 || nx<0 || nx>=100 || visited[ny][nx]) continue;
			if (map[ny][nx] == 1) continue;
			dfs(ny, nx);
		}
	}
}