강의로 돌아가기
양동국

저도 자바로 문제 풀었고 틀렸는데 답안보니까 저랑 똑같이 푸신 분들이 많아서 놀랐습니다. 왜 제 코드만 런타임 에러가 뜨는걸까요..

class Solution {
    int[][] pic;
    boolean[][] map;
    public int[] solution(int m, int n, int[][] picture) {
        pic = picture;
        map = new boolean[m][n];
        int numberOfArea = 0;
        int maxSizeOfOneArea = 0;
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                if(picture[i][j]!=0&&map[i][j]==false){
                    ++numberOfArea;
                    int sum = traversal(i,j);
                    if(sum>maxSizeOfOneArea){
                        maxSizeOfOneArea = sum;
                    }
                }
            }
        }
        int[] answer = new int[2];
        answer[0] = numberOfArea;
        answer[1] = maxSizeOfOneArea;
        return answer;
    }

    public int traversal(int i , int j){
        int sum = 1;
        map[i][j] = true;
        if(i>0&&map[i-1][j]==false&&pic[i-1][j]==pic[i][j]){
            sum+=traversal(i-1, j);
        }
        if(i+1<map.length&&map[i+1][j]==false&&pic[i+1][j]==pic[i][j]){
            sum+=traversal(i+1, j);
        }
        if(j>0&&map[i][j-1]==false&&pic[i][j-1]==pic[i][j]){
            sum+=traversal(i, j-1);
        }
        if(j+1<map[i].length&&map[i][j+1]==false&&pic[i][j+1]==pic[i][j]){
            sum+=traversal(i, j+1);
        }
        return sum;
    }
}
  • seobi49
    저도 실행시 런타임 에러가 떨어져서 원인이 뭘까 했는데 재귀 함수의 지역변수를 전역변수로 빼니 정상 동작 하네요.. seobi49 2018.10.15 09:30
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.