Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

최's 먹공로그

BOJ5014 스타트링크 본문

APS

BOJ5014 스타트링크

ChoiSH313 2022. 6. 13. 00:04

<Solution>

1. 숨바꼭질과 완전 똑같음

2. 큐에 front, back으로 인덱스 컨트롤 해주면서 front에 있는거를 Up, Down 해주면서 G 층에 간 경우를 찾기

3. Up의 경우 최대층을 넘길 수 없음

 

<Source Code>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ5014_스타트링크 {
	
	static int F, S, G, U, D, front = -1, back = -1;
	static int[] Q, visit, d;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		F = Integer.parseInt(st.nextToken()); // 총 층
		S = Integer.parseInt(st.nextToken()); // 강호
		G = Integer.parseInt(st.nextToken()); // 사무실
		U = Integer.parseInt(st.nextToken()); // 위로
		D = Integer.parseInt(st.nextToken()); // 아래로
		Q = new int[1000001];
		visit = new int[1000001];
		d = new int[1000001];
		if(S == G)
			System.out.print(0);
		else {
			int result_n = bfs();
			if(result_n == -1)
				System.out.print("use the stairs");
			else
				System.out.print(d[back]);
		}
	}
	
	public static int bfs() {
		Q[++back] = S;
		while(front != back) {
			front++;
			// Up(최대층을 넘기면 안됨)
			if(Q[front] + U <= 1000000 && Q[front] + U >= 1 && Q[front] + U <= F) {
				if(visit[Q[front] + U] == 0) {
					Q[++back] = Q[front] + U;
					visit[Q[back]] = 1;
					d[back] = d[front] + 1;
				}
			}
			if(Q[back] == G) return 1;
			
			// down
			if(Q[front] - D <= 1000000 && Q[front] - D >= 1) {
				if(visit[Q[front] - D] == 0) {
					Q[++back] = Q[front] - D;
					visit[Q[back]] = 1;
					d[back] = d[front] + 1;
				}
			}
			if(Q[back] == G) return 1;
		}
		return -1;
	}
}

'APS' 카테고리의 다른 글

BOJ2573 빙산  (0) 2022.06.26
BOJ2468 안전영역  (0) 2022.06.13
BOJ1697 숨바꼭질  (0) 2022.06.12
BOJ7569 토마토  (0) 2022.06.06
BOJ2644 촌수계산  (0) 2022.06.05