티스토리 뷰
출저 : 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 |
'Study > 알고리즘 문제풀이' 카테고리의 다른 글
백준 1890. 점프 :: 돼지개발자 (0) | 2019.01.03 |
---|---|
백준 9291. 스도쿠 채점 :: 돼지개발자 (0) | 2018.12.30 |
SWEA 1824. 혁진이의 프로그램 검증 :: 돼지개발자 (0) | 2018.12.26 |
백준 15486. 퇴사 2 :: 돼지개발자 (0) | 2018.12.19 |
백준 12847. 꿀 아르바이트 :: 돼지개발자 (0) | 2018.12.18 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday