Jun's Development Journey
[SWEA] 1226. [S/W 문제해결 기본] Queue - 미로1 본문
문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
www.swexpertacademy.com
풀이
이 문제는 전형적인 DFS 문제이다. 방문 배열을 이용하지 않고 구현한다면 여지없이 스택 오버플로우가 발생한다. 방문 배열을 별도로 이용해서 해당 경로에서 방문했었던 지점은 다시 가지 않도록 해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
public class Solution {
static Scanner scan = new Scanner(System.in);
static String[] map = new String[16];
static boolean[][] visited = new boolean[16][16];
static int chk = 0;
static int[] dr = { -1, 1, 0, 0 };
static int[] dc = { 0, 0, -1, 1 };
static int sr, sc;
static void reset_visited() {//방문 여부 배열 초기화
for(int i=0;i<16;i++) {
for(int j=0;j<16;j++)
visited[i][j] =false;
}
}
static void make_map() {
for (int i = 0; i < 16; i++) {
map[i] = scan.next();
for(int j=0;j<16;j++) {
if(map[i].charAt(j) == '2') {//시작점 찾기
sr = i;
sc = j;
}
}
}
}
static boolean is_valid(int r, int c) {//유효성 검사
if ((r >= 0 && r < 16) && (c >= 0 && c < 16) && map[r].charAt(c) != '1')
return true;
return false;
}
static void dfs(int r, int c) {
if (map[r].charAt(c) == '3') {
chk = 1;
return;
}
for (int i = 0; i < 4; i++) {//상하좌우 체크
if (is_valid(r + dr[i], c + dc[i]) && !visited[r + dr[i]][c + dc[i]]) {
visited[r + dr[i]][c + dc[i]] = true;
dfs(r + dr[i], c + dc[i]);
visited[r + dr[i]][c + dc[i]] = false;
}
}
}
static void solution() {
for (int i = 1; i <= 10; i++) {
scan.nextInt();
make_map();
dfs(sr, sc);
System.out.println("#" + i + " " + chk);
chk = 0;
reset_visited();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
solution();
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'SWEA > Intermediate' 카테고리의 다른 글
[SWEA] 1228. [S/W 문제해결 기본] List - 암호문1 (0) | 2019.08.06 |
---|---|
[SWEA] 1227. [S/W 문제해결 기본] Queue - 미로2 (0) | 2019.08.06 |
[SWEA] 1225. [S/W 문제해결 기본] Queue - 암호생성기 (0) | 2019.08.06 |
[SWEA] 1224. [S/W 문제해결 기본] Stack2 - 계산기3 (0) | 2019.08.05 |
[SWEA] 1223. [S/W 문제해결 기본] Stack2 - 계산기2 (0) | 2019.08.05 |