다익스트라

https://www.acmicpc.net/problem/16930 16930번: 달리기 진영이는 다이어트를 위해 N×M 크기의 체육관을 달리려고 한다. 체육관은 1×1 크기의 칸으로 나누어져 있고, 칸은 빈 칸 또는 벽이다. x행 y열에 있는 칸은 (x, y)로 나타낸다. 매 초마다 진영이는 www.acmicpc.net 문제 풀이 이 문제에서 내가 집은 포인트는 3 가지이다. 1. 우선 순위 큐를 이용하여 최대한 시간이 덜 걸리는 순으로 처리하는 것 (우선순위큐 bfs 다익스트라 이용) 2. dp배열을 이용해서 이미 왔던 곳이면 break를 거는 것 3. 이중 for 문을 이용해서 nextX,nextY를 정할 때 , 1부터~k까지 이동가능한 모든 경우를 큐에 넣는 것 1 2 3 4 5 6 7 8 9 1..
문제 풀이 이 문제에서 집어야 할 포인트는 세 가지다. 1. 3차원 visit[][][] 배열을 사용하여 열쇠를 먹을때 마다 visit[][][index++] 을 처리해줘서 열쇠 먹은시점이랑 열쇠를 안 먹은 시점이랑 분리 시키는 것. 2. BFS를 위해 집어 넣을 노드인 'Point' 에 대해 Comparable을 구현하여 열쇠를 가장 많이 먹은 시점이 우선 탐색할 수 있도록 해주는것. 3. 우선순위 큐인 PriorityQueue를 사용할 것. 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 ..
문제 풀이 이 문제에서 집어야 할 포인트는 두 가지다. 1. BFS를 활용한 우선순위 큐(PQ)를 이용하여 PQ안의 원소를 처리할 때 먼 산으로 가지 않게 하는 것. 2. 어느 위치(cur)로 갔을 때, 몇 번 만에 갔는지를 기록하여 (distance[] 배열) 무한 루프로 빠지지 않게 하는 것. => 즉 , if(distance[cur+e] > distance[cur]+ 1) { distance[cur+e] = distance[cur]+ 1; q.add(e + cur); } 이 식이 성립해야 하는데, 여기서 cur은 현재위치이고 , e 는 up 또는 down 버튼을 눌렀을 때의 증감치다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2..
김까따
'다익스트라' 태그의 글 목록 (2 Page)