<Algorithm> 44. 5014번 스타트링크
by BFine반응형
1. 5014번 스타트링크
기본 BFS 문제, 주의할점은 같은 층 일경우 0 , 층수가 100000층까지 가기 때문에 초기 min값을 크게 잡아야 한다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { static boolean[] visited; static int[] dist; static int min = Integer.MAX_VALUE; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br =new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int F = Integer.parseInt(st.nextToken()); int S = Integer.parseInt(st.nextToken()); int G = Integer.parseInt(st.nextToken()); int U = Integer.parseInt(st.nextToken()); int D = Integer.parseInt(st.nextToken()); visited = new boolean[F+1]; dist = new int[F+1]; visited[S] = true; dist[S] = 0; bfs(F, S, G, U, D); if(S == G) { System.out.println(0); return; } if(min != Integer.MAX_VALUE) { System.out.println(min); }else { System.out.println("use the stairs"); } } public static void bfs(int F, int S, int G, int U, int D) { Queue<Integer> queue = new LinkedList<>(); queue.add(S); int[] dx = {U,D}; while(!queue.isEmpty()) { int loc = queue.remove(); for(int i = 0 ; i < 2 ; i++) { int nloc; if(i == 0) { nloc = loc + dx[i]; }else { nloc = loc - dx[i]; } if(nloc <= F && nloc > 0 && !visited[nloc]) { visited[nloc] = true; queue.add(nloc); dist[nloc] = dist[loc] + 1; if(nloc == G && dist[nloc] < min) { min = dist[nloc]; } } } } } } | cs |
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 46. 2252번 줄세우기 (0) | 2018.08.11 |
---|---|
<Algorithm> 45. 14502번 연구소 (0) | 2018.08.10 |
<Algorithm> 43. 1991번 트리 순회 (0) | 2018.08.10 |
<Algorithm> 42. 2589번 보물섬 (0) | 2018.08.09 |
<Algorithm> 41. 2468번 안전영역 (0) | 2018.08.09 |
블로그의 정보
57개월 BackEnd
BFine