본문 바로가기
Algorithm/BOJ

[BOJ]10473번: 인간 대포

by BAYABA 2020. 8. 22.

 

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


suuntree님 풀이를 참고하여 해결하였습니다. (https://suuntree.tistory.com/152)

 

정점의 수가 작으므로 완전 그래프처럼 생각해도 해결할 수 있습니다.

 

출발점을 v[0], 도착점을 v[N]이라 놓고 나머지 중간 지점들을 입력받습니다.

 

특정 정점 N1과 N2의 거리 중 어떤 거리를 취할 지는 아래 두 가지 중 하나를 취하면 됩니다.

 

1. 대포를 사용하던가 

2. 그냥 걸어가던가 

 

두 정점 사이의 거리는 피타고라스 정리를 사용했고, getDistance 라는 함수로 구했습니다.

 

즉, minTime = min(getDistance(n1,n2)/5 , 2 + (getDistance(n1,n2) - 50) / 5 ) 입니다.

 

이런식으로 갱신하는 다익스트라를 구현하면 되겠습니다.


코드: https://github.com/cottory/algorithm/blob/master/BOJ/BOJ10473.cc

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

[BOJ]1946번: 신입 사원  (0) 2020.08.22
[BOJ]7576번: 토마토  (0) 2020.08.22
[BOJ]2206번: 벽 부수고 이동하기  (0) 2020.08.18
[BOJ]7562번: 나이트의 이동  (0) 2020.08.18
[BOJ]1525번: 퍼즐  (0) 2020.08.17