<commit_before>package boj_2178;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

/**
 * 백준 온라인 저지 2178번 (미로 탐색) 문제풀이
 *
 * @see https://www.acmicpc.net/problem/2178
 * @author devetude
 */
public class Main {
	// 이동할 수 없는 칸을 나타내는 문자 상수
	private static final char BLOCKED = '0';

	// 방향 배열 상수 (동, 서, 남, 북)
	private static final int[][] directions = { { 0, 1 }, { 0, -1 }, { -1, 0 }, { 1, 0 } };

	// 방향 배열 행, 열 상수
	private static final int ROW = 0;
	private static final int COL = 1;

	public static void main(String args[]) throws Exception {
		// 버퍼를 통해 입력 값을 받음
		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());

		// 지도 배열 초기화
		char[][] map = new char[N][M];

		// 루프를 돌며 지도를 만듬
		for (int i = 0; i < N; i++) {
			String line = br.readLine();

			for (int j = 0; j < M; j++) {
				map[i][j] = line.charAt(j);
			}
		}

		br.close();

		// 방문점 깊이 저장 배열 초기화
		int[][] isVisited = new int[N][M];
		isVisited[0][0] = 1;

		// 큐 객체 변수 초기화
		Queue<Point> queue = new LinkedList<>();

		// 시작점을 큐에 담음
		queue.offer(new Point(0, 0));

		// dfs 탐색 실행
		while (!queue.isEmpty()) {
			Point current = queue.poll();

			for (int[] direction : directions) {
				int nextRow = current.row + direction[ROW];
				int nextCol = current.col + direction[COL];

				if (0 <= nextRow && nextRow < N && 0 <= nextCol && nextCol < M) {
					if (isVisited[nextRow][nextCol] == 0 && map[nextRow][nextCol] != BLOCKED) {
						isVisited[nextRow][nextCol] = isVisited[current.row][current.col] + 1;
						queue.offer(new Point(nextRow, nextCol));
					}
				}
			}
		}

		// 결과 값 출력
		System.out.println(isVisited[N - 1][M - 1]);<commit_msg>modify problem 2178<commit_after>package boj_2178;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

/**
 * 백준 온라인 저지 2178번 (미로 탐색) 문제풀이
 *
 * @see https://www.acmicpc.net/problem/2178
 * @author devetude
 */
public class Main {
	// 방향 배열 상수
	private static final int[][] DIRECTIONS = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } };
	private static final int ROW = 0;
	private static final int COL = 1;

	public static void main(String args[]) throws Exception {
		// 버퍼를 통해 입력 값을 받음
		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[][] map = new int[N][M];

		for (int row = 0; row < N; row++) {
			String line = br.readLine();

			for (int col = 0; col < M; col++) {
				map[row][col] = Character.getNumericValue(line.charAt(col));
			}
		}

		br.close();

		// 방문 여부 저장 배열 초기화
		int[][] isVisited = new int[N][M];
		isVisited[0][0] = 1;

		// 큐 객체 변수 초기화
		Queue<Point> queue = new LinkedList<>();
		queue.offer(new Point(0, 0));

		// bfs 실행
		while (!queue.isEmpty()) {
			Point current = queue.poll();

			for (final int[] DIRECTION : DIRECTIONS) {
				int nextRow = current.row + DIRECTION[ROW];
				int nextCol = current.col + DIRECTION[COL];

				if (0 <= nextRow && nextRow < N && 0 <= nextCol && nextCol < M) {
					if (map[nextRow][nextCol] == 1) {
						if (isVisited[nextRow][nextCol] == 0) {
							isVisited[nextRow][nextCol] = isVisited[current.row][current.col] + 1;
							queue.offer(new Point(nextRow, nextCol));
						}
					}
				}
			}
		}

		// 결과 값 출력
		System.out.println(isVisited[N - 1][M - 1]);
{'fraction_non_alphanumeric': 0.16554869868526964, 'fraction_numerical': 0.020391735980681513, 'mean_word_length': 2.9914346895074946, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 7, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5863901', 'n_tokens_mistral': 1757, 'n_tokens_neox': 1654, 'n_words': 383}