<Algorithm> 70. 2819번 격자판의 숫자 이어붙이기(SW Expert)
by BFine반응형
1. 2819번 격자판의 숫자 이어붙이기
어렵게 느껴졌던 문제, 백준만 풀다가 한번 SW Expert 문제를 풀어봤는데 익숙하지 않아서 인지 어렵게 느껴졌다.
단순히 DFS로 모든 경우를 탐색하니 통과가 되었다. 4 * 4 행렬로 고정 되었기 때문이라 생각한다.
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 63 64 65 66 67 68 69 70 71 72 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { static int[][] arr; static boolean[][] visited; static boolean[] checkNumber; static int count; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br =new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); ArrayList<String> ans = new ArrayList<>(); for(int c = 0; c < T; c ++) { count = 0; arr = new int[4][4]; visited = new boolean[4][4]; checkNumber = new boolean[10000000]; StringTokenizer st; for(int i = 0; i < 4; i ++) { st = new StringTokenizer(br.readLine()); for(int j = 0; j < 4; j++) { arr[i][j] = Integer.parseInt(st.nextToken()); } } for(int i = 0; i < 4; i ++) { for(int j = 0; j < 4; j ++) { dfs(i, j, ""); } } ans.add("#"+(c+1)+" "+count); } for(String str : ans) System.out.println(str); } private static void dfs(int x, int y, String std) { std += arr[x][y]; if(std.length() == 7) { //System.out.println(std); if(!checkNumber[Integer.parseInt(std)]) { checkNumber[Integer.parseInt(std)] = true; count++; } return; } int[] dx = {0 , 0, 1, -1}; int[] dy = {1 , -1, 0, 0}; for(int i = 0; i < 4; i ++) { int nx = x + dx[i]; int ny = y + dy[i]; if(nx >= 0 && ny >= 0 && nx < 4 && ny < 4) { dfs(nx, ny, std); } } } } | cs |
참고 & 출처
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 73. 1068번 트리 (0) | 2018.09.03 |
---|---|
<Algorithm> 72. 4963번 섬의 개수(DFS) (0) | 2018.09.01 |
<Algorithm> 69. 2163번 초콜릿 자르기 (0) | 2018.08.29 |
<Algorithm> 68. 9251번 LCS (DP) (0) | 2018.08.28 |
<Algorithm> 67. 2293번 동전 1 (0) | 2018.08.27 |
블로그의 정보
57개월 BackEnd
BFine