[Coding Test] 인프런 JAVA 송아지 찾기 - BFS

LeeSeungEun·2023년 5월 19일
0

Coding Test

목록 보기
29/38

1. 문제

2. 코드

import java.util.*;
import java.io.*;

class Main {
    int answer = 0;
    int[] dis = {1, -1, 5};
    int[] ch;
    Queue<Integer> Q = new LinkedList<>();
    public int BFS(int s, int e) {
        ch = new int[10001];
        ch[s] = 1; // 출발지점
        Q.offer(s);
        int L = 0; // 레벨 값
        while (!Q.isEmpty()) {
            int len = Q.size();
            for (int i = 0; i < len; i++) {
                int x = Q.poll();
                for (int j = 0; j < 3; j++) {
                    int nx = x + dis[j]; //자식노드
                    if (nx == e) {
                        return L+1;
                    }
                    if (nx >= 1 && nx <= 10000 && ch[nx] == 0) { // 음수로 가지 않고, 방문한 곳은 또 방문하지 않도록 
                        ch[nx] = 1;
                        Q.offer(nx);
                    }
                }
            }
            L++;
        }
        return 0;
    }

    public static void main(String[] args) throws IOException {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int s = kb.nextInt();
        int e = kb.nextInt();
        System.out.println(T.BFS(s, e));
    }
}

3. 풀이

4. 링크

https://www.inflearn.com/course/lecture?courseSlug=%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84&unitId=72774

0개의 댓글