[SWEA] #1227 미로2

KwonSC·2021년 11월 13일
0

SWEA - Java

목록 보기
18/26
post-thumbnail

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14wL9KAGkCFAYD&categoryId=AV14wL9KAGkCFAYD&categoryType=CODE


Code

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

class Solution {
    static int[] dx = {1, 0, -1, 0};
    static int[] dy = {0, 1, 0, -1};
    static class Pos {
        int x;
        int y;
        public Pos(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }
    public static void main(String args[]) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        for (int testCase = 1; testCase <= 10; testCase++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), "");
            st.nextToken();
            Queue<Pos> queue = new LinkedList<>();
            Pos end = null;
            int[][] arr = new int[100][100];
            int[][] visited = new int[100][100];
            int flag = 0;
            for (int i = 0; i < 100; i++) {
                st = new StringTokenizer(br.readLine(), "");
                char[] chartoint = st.nextToken().toCharArray();
                for (int j = 0; j < 100; j++) {
                    int temp = Character.getNumericValue(chartoint[j]);
                    arr[i][j] = temp;
                    if (temp == 2) {
                        queue.offer(new Pos(i, j));
                    }
                    else if (temp == 3) {
                        end = new Pos(i, j);
                    }
                }
            }
            while (!queue.isEmpty()) {
                Pos pos = queue.poll();
                int x = pos.x;
                int y = pos.y;
                if (x == end.x && y == end.y) {
                    flag = 1;
                    break;
                }
                for (int i = 0; i < 4; i++) {
                    if ((0 <= x + dx[i] && x + dx[i] < 100 && 0 <= y + dy[i] && y + dy[i] < 100) && arr[x + dx[i]][y + dy[i]] != 1 && visited[x + dx[i]][y + dy[i]] != 1) {
                        visited[x + dx[i]][y + dy[i]] = 1;
                        queue.offer(new Pos(x + dx[i], y + dy[i]));
                    }
                }
            }
            System.out.printf("#%d %d\n", testCase, flag);
        }
    }
}

Solution

미로1과 Solution이 같다. 크기만 달라졌을뿐
Link : https://velog.io/@kwonsc/SWEA-1226-%EB%AF%B8%EB%A1%9C1

0개의 댓글