문제 (https://www.acmicpc.net/problem/2887)
입력으로 행성들의 좌표가 들어온다. 이 좌표들로 모든 행성 사이의 거리와 연결 비용을 구한다면 시간 초과가 발생한다. (N ≤ 100,000)
따라서, 행성들의 x, y, z 좌표를 각각 정렬한 후 반복문을 돌며 각 좌표에서 인접한 행성들 간의 비용을 구한다. 예제와 같이 N이 5라면 총 12개의 간선 정보가 생성된다. N이 6이라면 15개이다. 즉 (N-1) * 3개의 간선 정보를 얻는 것이다.
이렇게 생성한 간선 정보를 오름차순으로 정렬한 후 크루스칼 알고리즘으로 최소 비용을 찾아내면 된다.
1) 입력
2) x, y, z 좌표를 각각 정렬한 결과
3) 각 좌표에서 인접한 행성들로 비용을 구한 결과 (출발 노드 번호 -> 도착 노드 번호 | 비용)
[소스코드]
'ALGORITHM > BOJ' 카테고리의 다른 글
[BOJ] 13549번 숨바꼭질 3 (C++) (0) | 2022.01.17 |
---|---|
[BOJ] 1238번 파티 (C++) (0) | 2022.01.17 |
[BOJ] 1939번 중량제한 (C++) (0) | 2022.01.05 |
[BOJ] 3020번 개똥벌레 (C++) (0) | 2022.01.05 |
[BOJ] 4386번 별자리 만들기 (C++) (0) | 2022.01.04 |