https://www.acmicpc.net/problem/2178
이전에 파이썬으로 풀었던 문제이지만 Java의 문법 공부와 함께.. 새롭게 풀어 본 문제입니다.
bfs로 풀었으며 Scanner는 속도 이슈가 생겨서 안쓰고.. BufferedReader, StringTokenizer를 사용하였습니다.
(이 개념은 다시 정리해보겠습니다.)
문법적인 문제로.. 컴파일 에러, 런타임 에러.. 많이 발생하였습니다.. 반성하고 자바로 앞으로 계속 연습할 생각입니다..
import java.util.*;
import java.io.*;
public class Main
{
static int[][] arr;
static int[][] chk;
static int n;
static int m;
static int[] dx = {-1,1,0,0};
static int[] dy = {0,0,-1,1};
public static int ps(int x, int y,int cnt){
Queue<int[]> q = new LinkedList<>();
chk = new int[n][m];
q.add(new int[] {x,y,1});
while(!q.isEmpty()){
int temp[] = q.poll();
x = temp[0];
y = temp[1];
cnt = temp[2];
chk[x][y] = 1;
if(x==n-1 && y==m-1){
return cnt;
}
for(int i= 0; i < 4; i++){
if(x + dx[i] >= 0 && x + dx[i] < n && y + dy[i] >=0 && y + dy[i] < m){
if(arr[x + dx[i]][y+dy[i]] == 1 && chk[x + dx[i]][y+dy[i]] == 0){
chk[x + dx[i]][y+dy[i]] = 1;
q.add(new int[] {x + dx[i],y+dy[i],cnt+1});
}
}
}
}
return 0;
}
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
arr = new int[n][m];
for(int i=0; i<n; i++) {
String s = br.readLine();
for(int j=0; j<m; j++) {
arr[i][j] = s.charAt(j) - '0';
}
}
int result = ps(0,0,0);
System.out.println(result);
}
}
'알고리즘' 카테고리의 다른 글
파이썬 딕셔너리 lambda TypeError: bad operand type for unary -: 'str' 에러 관련 (0) | 2022.10.25 |
---|---|
해시 테이블 (Hash Table) with 파이썬 (0) | 2022.10.19 |
[백준] 1927번: 최소 힙 (0) | 2022.10.18 |
[백준] 11399번: ATM (0) | 2022.10.18 |
[Python] 다양한 문자열 입력 방법 (0) | 2022.05.03 |