티스토리 뷰

알고리즘

<baekjoon> 별자리 만들기

koyuchang 2020. 8. 21. 15:17

풀이

선을 하나 이을 때마다 두 별 사이의 거리만큼의 비용이 든다고 할 때, 별자리를 만드는 최소 비용을 구해야 하므로 최소스패닝 트리 알고리즘을 사용하였다.(크루스칼)

 

크루스칼 알고리즘을 사용하기 위해서는 union, find라는 메소드가 필요하고 각 좌표들이 어느 좌표를 가리키는지를 확인하기 위해 Edge라는 클래스를 생성하였다.

 

우선 입력받은 좌표들을 Point클래스로 객체화 하여 List에 넣어주었다. 동시에 각 좌표들을 스스로를 가리키며 루트노드가 된다.(초기단계)

 

그리고 Edge자료형의 List를 추가로 만들어서 Point객체의 각 값들을 이용하여 최소 값을 구하였다(특정 좌표에서 다른 좌표로 이동할 때 비용).

 

그 다음으로는  Collections.sort를 이용하여 최소비용이 가장 적게 드는 순서대로 정렬하였다.

 

마지막으로 각 좌표들을 연결해주면서 최소비용을 구하였다.(여기서 find함수와 union함수를 이용하여 연결되지 않은 두 좌표를 연결해준다.) 

 

결과

'알고리즘' 카테고리의 다른 글

<baekjoon> 치킨 배달  (0) 2020.08.25
<baekjoon> 단어 수학  (0) 2020.08.22
<SWEA> 8556-북북서  (0) 2020.08.19
<baekjoon> 2583- 영역 구하기  (0) 2020.08.17
<SWEA> 1238-Contact  (0) 2020.08.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
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
글 보관함