• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

송아지 찾기 문제

23.01.25 21:43 작성 23.01.25 21:47 수정 조회수 350

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

안녕하세요^^

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