inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

8. 송아지 찾기1(BFS)

송아지 찾기 시간초과 질문

192

dmsgml9903

작성한 질문수 1

0

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class FindCow {

    static int personPos;
    static int cowPos;
    static int[] idx = {5, 1, -1};

    public static int solution(int n) {
        boolean[] visit = new boolean[10_001];
        Queue<Integer> queue = new LinkedList<>();
        visit[n] = true;

        queue.offer(n);
        int level = 0;
        while (!queue.isEmpty()) {
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                Integer curPos = queue.poll();
                for (int k = 0; k < 3; k++) {
                    int nextPos = curPos + idx[k];
                    if (nextPos == cowPos) {
                        return level + 1;
                    }
                    if (nextPos < 10_001 && nextPos > 0 && !visit[nextPos]) {
                        queue.offer(nextPos);
                        visit[nextPos] = false;
                    }
                }
            }
            level++;
        }
        return 1;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        personPos = in.nextInt();
        cowPos = in.nextInt();
        System.out.println(solution(personPos));
    }
}

안녕하세요! 좋은 강의 항상 감사드립니다.

강의 중, 송아지 찾기(BFS)에서 시간 초과가 떠서 확인해 보니, 강의에서 올려주신 코드와 딱히 다른 부분이 없어 보이는데 시간초과가 납니다. 왜 그럴까요?

스크린샷 2024-02-26 오전 9.16.30.png

java 코딩-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
dmsgml9903님, BFS 알고리즘 관련 질문 감사합니다.

해당 코드에서 시간 초과가 발생하는 이유는 방문 처리 로직에 오류가 있어서 무한 루프에 빠지거나 같은 정점을 계속 방문하게 되는 비효율적인 검색이 진행되기 때문인 것 같습니다.

visit[nextPos] = false; 부분에 문제가 있습니다. 이미 방문한 위치를 true로 바꾸어야 하는데, false로 설정하고 있습니다. 따라서 이미 방문한 위치를 또 방문하는 상황이 발생합니다. 그 부분을 visit[nextPos] = true;로 바꿔주면 에러를 해결할 수 있을 것입니다.

또한, 문제 해결에 도움이 되는 이미지를 링크로 첨부하오니 참고해 주세요.
재채점 결과 보기

해당 코드를 수정하여 다시 실행해보시고, 문제가 지속될 경우 다시 문의해 주세요.

안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.

0

26

1

갑자기 채점 사이트가 바뀌었어요

0

31

1

문제 리스트 페이지

0

26

1

채점 사이트 관련 질문드립니다

0

23

1

봉우리 문제 질문입니다

0

80

2

씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?

0

64

0

이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?

0

71

0

가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법

0

67

1

좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ

0

84

2

6-7 강의에서

0

47

1

6-6. 장난꾸러기 질문 있습니다.

0

44

1

강의 수강후 코딩테스트

0

109

1

answer 변수 사용 여부

0

43

1

2중 for문

1

84

2

2-11. 임시반장정하기 (Runtime Error)

0

63

1

혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?

0

70

1

이런 풀이는 어떨까요

0

42

1

자바 스트림 방식의 효율성 질문 드립니다.

0

57

1

알고리즘 자료 구조들..

0

61

1

StringBuilder vs BufferdWriter

0

47

1

원더랜드(프림)

0

49

1

이런 코드는 어떤가요?

0

60

1

bfs 풀이

0

57

1

병합정렬

0

55

1