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

 

2178번: 미로 탐색

첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.

www.acmicpc.net


기본 bfs 아녀? 라고 생각했지만 어ㅉㅐ선가 와장창

ArrayIndex에러라서 대체 어디서 잘못접근하고 있는거지 계속 찾느라 고생했다...

 

범인은

static boolean VV(int r,int c) {
		if(r<0||r>=a) return false;
		if(c<0||c>=b) return false;
		if (aa[r][c]==0) return false;
		return true;
	}

VV 라는 함수를 통해 격자상의 위치인가를 확인했는데

마지막 aa[r][c]를 확인할 때 이상한 곳을 접근했나보다 아니 위에서 return으로 넘기니까 상관없는거 아녀..?

... 혹시 ㅗㅁㄹ라 나중에 0인지1인지 확인해보니 바로 통과했다.

저게 문제였던걸로...

알다가도 모를 

 

Ğ̎ĭ̎t̆̎H̆̎ŭ̎b̆̎ : https://github.com/YunYunYY/BOJ_Java/blob/main/B2178.java

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

public class B2178 {
	static int a,b;
	static int[][] aa;
	static int[][] que = new int[1000000][3];
	static int q,w;
	static boolean[][] V;
	static int[][] dir = {{0,1},{1,0},{0,-1},{-1,0}};

	public static void main(String[] args) throws IOException{
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer stt = new StringTokenizer(bf.readLine());
		a=Integer.parseInt(stt.nextToken());
		b=Integer.parseInt(stt.nextToken());
		aa=new int[a][b];V=new boolean[a][b];
		
		for (int i=0;i<a;i++) {
			String s = bf.readLine();
			for(int j=0;j<b;j++)
				aa[i][j]=s.charAt(j)-'0';
		}
		System.out.println(bfs(0, 0));
	}
	static boolean VV(int r,int c) {
		if(r<0||r>=a) return false;
		if(c<0||c>=b) return false;
		return true;
	}
	static int bfs(int r, int c) {
		q=0; w=0;
		que[q][0]=r;que[q][1]=c;que[q++][2]=1;
		V[r][c]=true;
		while(q!=w) {
			int rr = que[w][0];
			int cc = que[w][1];
			if(rr==a-1&&cc==b-1) {
				return que[w][2];
			}
			for(int i=0;i<4;i++) {
				int nr = rr+dir[i][0];
				int nc = cc+dir[i][1];
				if(!VV(nr,nc))
					continue;
				if (!V[nr][nc]&&aa[nr][nc]==1) {
				//System.out.println(nr+" "+nc+" "+que[w][2]);
				que[q][0]=nr;que[q][1]=nc;
				que[q++][2]=que[w][2]+1;
				V[nr][nc]=true;
				}
			}
			w++;
		}
		return -1;		
	}
}

'BOJ > Java' 카테고리의 다른 글

백준 Java : #1002  (0) 2022.05.11
백준 Java : #1064  (0) 2022.04.20
Java : Lambda / stream+pipelining / Singleton  (0) 2022.04.01
백준 Java : #2217  (0) 2022.03.31
백준 Java:#8595  (0) 2022.03.22

+ Recent posts