티스토리 뷰
1) 생각
[SW Expert] 1226. [S/W 문제해결 기본] 7일차 - 미로1 문제와 99.9999999998% 똑같다.
처음 생각
똑같은 미로 찾기다. 이전 문제의 16으로 짜여있는 배열의 크기를 100으로 바꿔주었다.
2) 방안
1) 배열의 크기와 반복문의 범위를 100으로 수정하였다.
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 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; public class Solution { static int[][] arr; static int sx,sy; static StringBuilder sb; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); sb = new StringBuilder(); int tc = 10; for(int i=1;i<=tc;i++) { br.readLine(); arr = new int[100][100]; for(int j=0;j<100;j++) { String t = br.readLine(); for(int k=0;k<100;k++) { arr[j][k] = t.charAt(k)-'0'; if(arr[j][k]==2) { sx = j; sy = k; } } } sb.append("#"+i+" "); solve(); } System.out.print(sb); } static int[][] dir = {{1,0},{0,1},{-1,0},{0,-1}}; private static void solve() { Queue<Integer> queue = new LinkedList<>(); queue.add(sx); queue.add(sy); while(!queue.isEmpty()) { int x = queue.poll(); int y = queue.poll(); for(int i=0;i<4;i++) { int tx = x+dir[i][0]; int ty = y+dir[i][1]; if(arr[tx][ty]!=1) { if(arr[tx][ty]==3) { sb.append("1\n"); return; } arr[tx][ty] = 1; queue.add(tx); queue.add(ty); } } } sb.append("0\n"); } } | cs |
'알고리즘 > SW Expert' 카테고리의 다른 글
[SW Expert] 1873. 상호의 배틀필드 (0) | 2018.08.31 |
---|---|
[SW Expert] 1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 (0) | 2018.08.30 |
[SW Expert] 1226. [S/W 문제해결 기본] 7일차 - 미로1 (0) | 2018.08.29 |
[SW Expert] 2817. 부분 수열의 합 (0) | 2018.08.28 |
[SW Expert] 3347. 올림픽 종목 투표 (0) | 2018.08.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday