[프로그래머스][JAVA] 거리두기 확인하기 (BFS, 완전탐색)

[프로그래머스][JAVA] 거리두기 확인하기 (BFS, 완전탐색)

import java.util. * ;

class Solution {

public int [] solution( String [][] places) {

List < Integer > list = new ArrayList < > ();

Loop1 :

for ( String [] place : places){

char [][] waitArr = new char [ 10 ][ 10 ];

for ( int i = 2 ; i < 7 ; i + + ){

char [] input = place[i - 2 ].toCharArray();

for ( int j = 2 ; j < 7 ; j + + ){

waitArr[i][j] = input[j - 2 ];

}

}

// for(int i=0; i<10; i++){

// for(int j=0; j<10; j++){

// System.out.print(waitArr[i][j]);

// }

// System.out.println();

// }

// System.out.println();

for ( int i = 2 ; i < 7 ; i + + ){

for ( int j = 2 ; j < 7 ; j + + ){

if (waitArr[i][j] = = 'P' ){

if (waitArr[i + 1 ][j] = = 'P' // 열 옆자리 사람

| | waitArr[i][j + 1 ] = = 'P' // 행 옆자리 사람

| | (waitArr[i + 1 ][j] = = 'O' & & waitArr[i + 2 ][j] = = 'P' ) //2칸 아랫자리 사람

| | (waitArr[i][j + 1 ] = = 'O' & & waitArr[i][j + 2 ] = = 'P' ) //2칸 옆자리 사람

| | (waitArr[i + 1 ][j] = = 'O' & & waitArr[i + 1 ][j + 1 ] = = 'P' ) //대각선 사람

| | (waitArr[i][j + 1 ] = = 'O' & & waitArr[i + 1 ][j + 1 ] = = 'P' )

| | (waitArr[i][j - 1 ] = = 'O' & & waitArr[i + 1 ][j - 1 ] = = 'P' )

| | (waitArr[i + 1 ][j] = = 'O' & & waitArr[i + 1 ][j - 1 ] = = 'P' )

){

list. add ( 0 );

continue Loop1;

}

}

}

}

list. add ( 1 );

}

int [] answer = new int [list.size()];

for ( int i = 0 ; i < list.size(); i + + ){

answer[i] = list.get(i);

}

return answer;

}

}

from http://aig2029.tistory.com/269 by ccl(A) rewrite - 2021-09-11 12:01:11