본문 바로가기
백준/완전탐색

백준 5014. 스타트링크

by 29살아저씨 2021. 8. 26.
반응형

🅰 백준 5014. 스타트링크

 

5014번: 스타트링크

첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.

www.acmicpc.net

✏️ 문제 풀이

  •  

✏️ 소스코드

package bruteforce;

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

public class Main_골드5_5014_손은성 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		Queue<int[]> q = new LinkedList<int[]>();
		boolean visited[];
		boolean ans = false;

		int F = Integer.parseInt(st.nextToken()); // 건물 전체 층
		visited = new boolean[F+1]; // 방문체크 하기 위함
		int S = Integer.parseInt(st.nextToken()); // 강호의 현재 층
		int G = Integer.parseInt(st.nextToken()); // 스타트 링크 위치 층
		int U = Integer.parseInt(st.nextToken()); // 위로 가는 버튼
		int D = Integer.parseInt(st.nextToken()); // 아래로 가는 버튼

		q.add(new int[] { S, 0 }); // 강호의 현재 층 넣기

		while (!q.isEmpty()) {
			int now = q.peek()[0];
			int depth = q.poll()[1];

			// 스타트링크 층에 도착했다면
			if(now == G) {
				System.out.println(depth);
				ans = true;
				break;
			}
			// 현재 층에 방문 했다면
			if (visited[now])
				continue;

			visited[now] = true; // 방문체크

			// 현재층에서 내려갈 곳이 있다면
			if (now - D >= 1) {
				q.offer(new int[] { now - D, depth + 1 });
			}
			// 현재층에서올라갈 곳이 있다면
			if (now + U <= F) {
				q.offer(new int[] { now + U, depth + 1 });
			}
		}
		if(!ans)
		System.out.println("use the stairs");
	}

}

 

✅ 후기

  •  
반응형

'백준 > 완전탐색' 카테고리의 다른 글

백준 1759. 암호 만들기  (0) 2021.08.26
백준 9663. N-Queen  (0) 2021.08.26
백준 2251. 물통  (0) 2021.08.26
백준 1697. 숨바꼭질  (0) 2021.08.26
백준 1182. 부분수열의 합  (0) 2021.08.26

댓글