Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[SW Expert Academy] 1226. [S/W 문제해결 기본] 7일차 - 미로1 본문

SW_Expert

[SW Expert Academy] 1226. [S/W 문제해결 기본] 7일차 - 미로1

코드와이 2021. 3. 1. 15:18

 

문제링크

swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=4&contestProbId=AV14vXUqAGMCFAYD&categoryId=AV14vXUqAGMCFAYD&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=JAVA&select-1=4&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

미로1, 미로2 두 문제는 map의 크기만 16 -> 100으로 변경되고 다른 차이점은 없다.

package D4;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 미로1 {
	
	static char[][] arr;
	static int strR, strC, ans;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		
		for(int tc = 1; tc <= 10 ; tc++) {
			sb.append("#").append(tc).append(" ");
			
			br.readLine();
			
			arr = new char[16][16];
			
			for(int i = 0 ; i < 16 ; i++) {
				arr[i] = br.readLine().toCharArray();
			}
			strR = 0;
			strC = 0;
			ans = 0;
			for(int i = 0 ; i < 16 ; i++) {
				for(int j = 0 ; j < 16 ; j++) {
					if (arr[i][j] == '2') {
						strR = i;
						strC = j;
					}
				}
			}
			func(strR, strC);
			sb.append(ans == 1 ? ans : 0).append("\n");
		}
		sb.setLength(sb.length() - 1);
		System.out.println(sb);
	}
	
	static int[] dr = {-1, 1, 0, 0};
	static int[] dc = {0, 0, 1, -1};
	public static void func(int r, int c) {
		
		if(arr[r][c] == '3') {
			ans = 1;
			return;
		}
		for(int d = 0 ; d < 4 ; d++) {
			int nr = r + dr[d];
			int nc = c + dc[d];
			
			if(arr[nr][nc] == '0' || arr[nr][nc] == '3') {
				arr[r][c] = '1';
				func(nr, nc);
				arr[r][c] = '0';
			}
		}
		
		return;
	}
}