:: ADVANCE ::

[BaekJoon][2593] 엘리베이터 본문

Algorithm/graph

[BaekJoon][2593] 엘리베이터

KSJ14 2016. 9. 8. 23:12
반응형

BAEKJOON ONLINE JUDGE


한국정보올림피아드 시.도 지역본선 2005


2593 엘리베이터


https://www.acmicpc.net/problem/2593




1차 풀이 : DP

input을

elevator[층] : 각 층에서 갈 수 있는 엘리베이터 번호

fl[엘리베이터 번호] : 각 엘리베이터에서 갈 수 있는 층

들을 vector로 저장


dp[floor][elevator] : floor를 elevator로 도착할 때의 최소 이동    (floor 없어도 될 듯)

이동할 때 각 elevator를 중점으로 이동


요즘 DP 공부 중이라 DP 적으로 접근했는데 over한 듯...

답이 맞기는 하였지만 시간이 60ms가 나오기도 했고 이 풀이는 영 아닌것 같아서 다시 접근




2. BFS

이 문제의 핵심은 한번 탄 엘리베이터를 또 타지 않는다는 것이다. + 빨리 도착만 하면 되므로

층에 연결된 엘리베이터를 que에 넣어서 BFS




3. 다익스트라 (Dijkstra)

BFS로 문제를 풀고 보니 엘레베이터 간 연결을 graph로 표현하고 이를 최단경로 찾는 알고리즘을 이용하면 되겠다는 생각이 들어 다시 풀음


3_1 data 저장을 위와 같이 한 경우




3_2 data 저장을 엘리베이터간 연결만 graph로 표현한 경우

확실히 이 경우가 isLink 함수를 구현하는데 실수를 해서 골머리를 썩긴 했지만 메모리를 제일 적게 사용했다.

1등 소스 !~!



반응형

'Algorithm > graph' 카테고리의 다른 글

[BaekJoon][1613] 역사  (0) 2016.10.11
[BaekJoon][7577] 탐사  (0) 2016.10.03
[BaekJoon][2611] 자동차 경주  (0) 2016.09.01
[BaekJoon][1717] 집합의 표현  (0) 2016.07.11
[BaekJoon][1916] 최소비용 구하기  (0) 2016.07.04
Comments