Skip to content

Latest commit

 

History

History
65 lines (59 loc) · 2.01 KB

File metadata and controls

65 lines (59 loc) · 2.01 KB

프로그래머스 Level2 : 2018 KAKAO BLIND RECRUITMENT [1차] 프렌즈4블록

class Solution {
    public int solution(int m, int n, String[] board) {
        int answer = -1;
        char[][] b = new char[m][n];
        for(int i=0; i<m; i++){
            for(int j=0; j<n; j++){
                b[i][j] = board[i].charAt(j);
            }
        }
        
        int cnt = 0;
        while(answer!=cnt){
            answer=cnt;
            boolean[][] isPop = new boolean[m][n];
            for(int i=0; i<m-1; i++){
                for(int j=0; j<n-1; j++){
                    char currBlock = b[i][j];
                    if(currBlock=='X') continue;

                    // currBlock=왼쪽위 터트릴수 있는 블록 체크
                    char rBlock = b[i][j+1];
                    char bBlock = b[i+1][j];
                    char rbBlock = b[i+1][j+1];

                    if(currBlock==rBlock&&currBlock==bBlock&&currBlock==rbBlock){
                        isPop[i][j] = true;
                        isPop[i][j+1] = true;
                        isPop[i+1][j] = true;
                        isPop[i+1][j+1] = true;
                    }
                }
            }
            for(int i=0; i<m; i++){
                for(int j=0; j<n; j++){
                    if(isPop[i][j]){
                        cnt++;
                        b[i][j] = 'X';
                    }
                }
            }

            for(int i=m-1; i>0; i--){
                for(int j=0; j<n; j++){
                    if(b[i][j]=='X'){
                        int k = i-1;
                        for(; k>=0; k--){
                            if(b[k][j]!='X') break;
                        }
                        if(k>=0){
                            b[i][j] = b[k][j];
                            b[k][j] = 'X';       
                        }
                    }
                }
            }
        }        
        return answer;
    }
}