본문 바로가기
프로그래밍/알고리즘 풀이

백준 5014 스타트링크 자바

by 방구석개발자 2021. 8. 17.
반응형

5014 스타트링크 문제 보러가기

 

5014번: 스타트링크

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

www.acmicpc.net

문제 설명

자바 코드

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

public class Main {
    static int visited[];
    public static void main(String[] args) throws Exception{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        int []input= Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); //F S G U D
        visited=new int [input[0]+1];
        System.out.println(bfs(input));
    }

    static String bfs(int []input){
        Queue<Integer> queue=new LinkedList<>();
        queue.add(input[1]);
        visited[input[1]] = 1;
        while(!queue.isEmpty()){
            int chk=queue.poll();
            if(chk==input[2]){
                return String.valueOf(visited[chk]-1);
            }

            if(chk+input[3]<=input[0]&&visited[chk+input[3]]==0){//press U
                visited[chk + input[3]] = visited[chk] + 1;
                queue.add(chk + input[3]);
            }

            if(chk-input[4]>0&&visited[chk-input[4]]==0) {//press D
                visited[chk - input[4]] = visited[chk] + 1;
                queue.add(chk - input[4]);
            }
        }
        return "use the stairs";
    }

}

문제 풀이

bfs와 동적프로그래밍으로 풀었습니다.

반응형

댓글