티스토리 뷰

출저 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7I5fgqEogDFAXB


"무식한 DFS"



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
58
59
60
61
62
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
public class Solution {
    static int T;
    static int[][] map;
    static int[] dx = {0,0,1,-1};
    static int[] dy = {1,-1,0,0};
    static Set<Integer> set = new HashSet<>();
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        T = Integer.parseInt(br.readLine());
        int t = 1;
        
        while(T-- > 0) {
            
            map = new int[4][4];
            set.clear();
            
            for (int i = 0; i < 4; i++) {
                StringTokenizer st = new StringTokenizer(br.readLine());
                for (int j = 0; j < 4; j++) {
                    map[i][j] = Integer.parseInt(st.nextToken());
                }
            }
            
            // 모든 칸에서 시작해서 탐색
            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 4; j++) {
                    solve(i,j,map[i][j],0);
                }
            }
            System.out.printf("#%d %d\n",t++,set.size());
            
        }
    }
    
    static void solve(int x, int y, int val, int cnt) {
        
        // 총 6번 움직였다면
        if(cnt == 6) {
            set.add(val);
            return ;
        }
        
        for (int i = 0; i < 4; i++) {
            int nx = x + dx[i];
            int ny = y + dy[i];
            
            // 범위 밖이라면
            if(nx < 0 || nx >=4 || ny < 0 || ny >= 4
                continue;
            
            solve(nx,ny,val*10 + map[nx][ny], cnt+1);
        }
    }
}
cs






댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday