▶문제설명
[SWEA] 1210. Ladder1
https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh&categoryId=AV14ABYKADACFAYh&categoryType=CODE
▶Solution
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 static int map[][] = new int[100][100]; public static boolean[][] visited; public static boolean find = false; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = 0; int answer = -1; for (int t = 0; t < 10; t++) { T = sc.nextInt(); find = false; for (int i = 0; i < 100; i++) for (int j = 0; j < 100; j++) map[i][j] = sc.nextInt(); for (int i = 0; i < 100; i++) { // 출발점을 찾으면 알고리즘 수행 후 목적지 도착하면 브레이크 if (map[0][i] == 1) { // 출발점인 경우 FindTarget(0, i); if (find) { answer = i; break; } } } System.out.printf("#%d %d\n", T, answer); } } public static void FindTarget(int i, int j) { visited = new boolean[100][100]; while (i<100) { visited[i][j] = true; //System.out.println(i + " : " + j); if (map[i][j] == 2) { find = true; break; } if (0 <= j - 1 && map[i][j - 1] == 1 && visited[i][j - 1] == false) { // 왼쪽이 뚫린 경우 j--; } else if (j + 1 < 100 && map[i][j + 1] == 1 && visited[i][j + 1] == false) { // 오른쪽이 뚫린 경우 j++; } else { // 아래가 뚫린 경우 i++; } } } } | cs |
'■ 알고리즘 문제 풀이 > SWEA' 카테고리의 다른 글
[SWEA-D3] 1213. String (0) | 2019.02.20 |
---|---|
[SWEA-D4] 1211. Ladder2 (0) | 2019.02.20 |
[SWEA-D3] 1209. Sum (0) | 2019.02.20 |
[SWEA-D3] 1206. View (0) | 2019.02.20 |
[SWEA-D3] 1208. Flatten (0) | 2019.02.20 |