인프런 커뮤니티 질문&답변

하얀님의 프로필 이미지
하얀

작성한 질문수

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

8. 송아지 찾기1(BFS)

송아지 찾기 문제

해결된 질문

작성

·

407

·

수정됨

0

package dfs_and_bfs;

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

public class Solution_7 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		
		String positions[] = br.readLine().split(" ");
		
		
		int S = Integer.parseInt(positions[0]);
		
		int E = Integer.parseInt(positions[1]);
		
		Queue<Integer> queue = new LinkedList<>();
		
		int levels[] = new int[10001];
		boolean[] visited = new boolean[10001];
		
		queue.offer(S);
		
		levels[S] = 0;
		visited[S] = true;
		
		int[] dis = {1, -1, 5};
		
		
		while(!queue.isEmpty()) {
			int pos = queue.poll();
			
			if(pos == E) {
				System.out.println(levels[pos]);
				break;
			}else {
				for(int i = 0; i < dis.length; i++) {
					int newPos = pos + dis[i];
					if(newPos >=1 && newPos <= 10000 && !visited[newPos]) {
						queue.add(newPos);
						levels[newPos] = (levels[pos] + 1);
						visited[newPos] = true;
					}
				}
				
			}
				
		}		

	}

}

혹시 이런 식으로 구현하게 되면 levels 라는 배열이 필요하게 되는데 맞나요? 채점 사이트에서는 맞았다고 나옵니다

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

네. 맞습니다. 잘 하셨습니다.

하얀님의 프로필 이미지
하얀

작성한 질문수

질문하기