회원가입
로그인
Toggle navigation
문제
문제
전체 문제
문제 출처
단계별로 풀어보기
알고리즘 분류
추가된 문제
문제 순위
문제
푼 사람이 한 명인 문제
아무도 못 푼 문제
최근 제출된 문제
최근 풀린 문제
랜덤
출처
ICPC
Olympiad
한국정보올림피아드
한국정보올림피아드시․도지역본선
전국 대학생 프로그래밍 대회 동아리 연합
대학교 대회
카카오 코드 페스티벌
Coder's High
ICPC
Regionals
World Finals
Korea Regional
Africa and the Middle East Regionals
Europe Regionals
Latin America Regionals
North America Regionals
South Pacific Regionals
문제집
대회
1
채점 현황
랭킹
게시판
그룹
더 보기
재채점 기록
블로그
강의
실험실
도움말
BOJ Stack
BOJ Book
전체
공지
자유
질문
오타/오역/요청
게시판 공지
홍보
업데이트
solved.ac
글쓰기
질문 도움말
자주묻는 질문
미로탐색 구현에서 런타임에러 발생합니다
2178번 - 미로 탐색
xemic
6년 전
0
0.0을 시작으로 m.n까지 이동하는 최단 횟수를 구하는거라서 bfs 알고리즘을 활용하였습니다.
큐를 사용하였으며, bfs가 시작되기 이전까지 코드만 실행해보았을땐 제대로 작동하여 오류가 bfs에서 있는듯 한데 런타임에러가 발생하는 원인을 잘 모르겠어서 도움을 요청합니다. ㅠ
(컴파일은 ideone.com 홈페이지로 컴파일 하였습니다!)
import java.util.*; import java.lang.*; import java.io.*; class Pos { int x; int y; Pos() {} Pos(int x, int y) { this.x = x; this.y = y; } } class Main { public static void main (String[] args) { Scanner sc = new Scanner(System.in); //우선 입력한 내용 변수에 정리. int h = sc.nextInt(); int w = sc.nextInt(); int arr[][] = new int[h][w]; for(int i=0; i<h; i++) { int temp = sc.nextInt(); int cnt=0; for(;temp>=1; temp/=10) { arr[i][w-1-cnt] = temp - (temp/10)*10; cnt++; } if(cnt!=w-1) { for(int j=0; cnt<w; cnt++) { arr[i][j] = 0; j++; } } } //bfs 시작. Queue<Pos> q = new LinkedList<Pos>(); Pos firstPos = new Pos(0, 0); q.offer(firstPos); while(!q.isEmpty()) { Pos p = new Pos(); p = q.poll(); int dx[] = new int[4]; int dy[] = new int[4]; dx[0] = -1; dx[1] = 1; dx[2] = 0; dx[3] = 0; dy[0] = 0; dy[1] = 0; dy[2] = -1; dy[3] = 1; for(int i=0; i<4; i++) { int tempX = p.x + dx[i]; int tempY = p.y + dy[i]; if(tempX>=0 && tempX<w && tempY>=0 && tempY<h && arr[tempY][tempX]==1) { arr[tempY][tempX] = arr[p.y][p.x] + 1; Pos inPos = new Pos(tempX, tempY); q.offer(inPos); } } } //bfs 이후 arr 내에서 가장 큰 값을 출력하면 그게 정답일듯. int max=0; for(int i=0; i<h; i++) { for(int j=0; j<w; j++) { if(arr[i][j]>max) max = arr[i][j]; } } System.out.print(max); } }
djm03178
6년 전
2
M이 커지면 int가 받을 수 있는 정수의 최댓값을 초과할 수 있습니다. long으로 해도 마찬가지입니다.
댓글을 작성하려면
로그인
해야 합니다.
xemic 6년 전