알고리즘 풀이/프로그래머스

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

배게 2021. 9. 11. 11:54
728x90

BFS가 정석인데 완전탐색으로 가라쳐서 했음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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;
    }
}
cs