회원가입
로그인
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
글쓰기
질문 도움말
자주묻는 질문
토마토 런타임에러 질문이요 ㅠㅠ
7576번 - 토마토
o0xvx0o5
4년 전
0
테스트 케이스는 모두 통과하고 다른 것들도 해봤는데 런타임에러가나네요ㅠㅠ
문제를 모르겠어요
import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Pa{ // (x,y) 를 이용하기위해 int x; int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public Pa(int x, int y) { this.x = x; this.y = y; } public Pa() { } } public class Main { static int data[][]; //토마토 데이터 입력 static int map[][]; //토마토 날짜를 입력받기위해 static int x[] = { -1, 1, 0, 0 }; //상하좌우 static int y[] = { 0, 0, -1, 1 }; static Queue<Pa> q; public static void bfs(int n, int m,boolean[][] check ) { while(!q.isEmpty()) { int g= q.peek().getX(); int h= q.poll().getY(); check[g][h]=true; // 익은 토마토 체크 for(int i=0;i<4;i++) { //상하좌우 방문하기 int nextX = g+ x[i]; int nextY = h+ y[i]; if(nextX>-1 && nextY> -1 && nextX<n && nextY<m && data[nextX][nextY] == 0 && check[nextX][nextY]==false) { //방문할수 있는 상태 //토마토가 익지 않은 상태 + 아직 방문하지 않은 토마토라면 q.add(new Pa(nextX,nextY)); // 방문하고 Queue 에 삽입 check[nextX][nextY]=true; //방문체크 map[nextX][nextY]=map[g][h]+1; //그 토마토와 인접해있는것은 하루 지나면 익으니까 +1 } } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); int count=0; int max=0; boolean check[][]; data = new int[n][m]; // n과 m을 반대로입력 check = new boolean[n][m]; map = new int[n][m]; q= new LinkedList<Pa>(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { data[i][j] = sc.nextInt(); if(data[i][j]==1) { q.add(new Pa(i,j)); //만약 토마토가 익은 상태라면 바로 q에넣는다. //익은 토마토 (1) 이 여러개라면 첫번째로 고른 익은 토마토 주변 보다 먼저 //진행되야 하기 때문에 } } } bfs(n,m,check); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(check[i][j]==false && data[i][j]!=-1) { //방문하지 안았는데 그때 토마토가 있는 상태라면 System.out.println(-1); // 모든 토마토를 하지 못한것이기에 -1 출력 System.exit(1); } if(max<map[i][j]) { // 가장 큰 값이 제일 마지막 토마토가 익는 날짜 max=map[i][j]; } } } System.out.println(max); } }
댓글을 작성하려면
로그인
해야 합니다.
o0xvx0o5 4년 전
테스트 케이스는 모두 통과하고 다른 것들도 해봤는데 런타임에러가나네요ㅠㅠ
문제를 모르겠어요