본문 바로가기

크루스칼3

[백준] 1647.도시분할계획 (java) / 크루스칼, Union-Find @크루스칼, Union-Find / 51m 시간이 계속 터져서, 15분정도 고쳤다. 쉬운 문제인데 너무 어렵게 생각해서 좀 돌아갔다. 문제 링크 https://www.acmicpc.net/problem/1647 1647번: 도시 분할 계획 첫째 줄에 집의 개수N, 길의 개수M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 집과 B번 집을 연결하는 길의 유지비가 C (1 ≤ C ≤ 1,000)라는 뜻이다. www.acmicpc.net 구현 포인트 처음에는 배열에 값을 받고, Arrays.sort()로 정렬했는데 우선순위 큐로 다시 풀어보니 시간이 1초 이상 줄었다. (.. 2020. 2. 2.
다익스트라 vs 크루스칼 비교 (java) 다익스트라 크루스칼 구현 방법 우선순위 큐 + dist(점화식) 우선순위 큐 + Union-Find 중심 정점 중심 간선 중심 시작점 출발점이 정해져 있는 경우 간선의 가중치가 가장 작은 것부터 시작한다 큐에 넣는 시점 dist가 갱신 될 때에만 그 점에서 출발하는 간선을 우선순위 큐에 넣어준다. 모든 정점을 우선순위 큐에 넣고 시작한다 용도 점과 점 사이의 거리를 구할 경우 최소 신장 트리를 그릴 때 끝 점과 점 사이의 최단 거리를 찾고 나면, 더이상 탐색하지 않는다. 목적에 따라 끝까지 그릴 수도 있다. 최소 신장 트리가 만들어 질 때까지(모든 점들이 다 이어질 때 까지) 탐색한다. 두 덩이일 경우 한 덩이만 그려지고 다른 한덩이는 그려지지 않는다(이어져 있지 않기 때문에) 간선 중심이므로 끝까지 가.. 2020. 2. 1.
[백준] 17472.다리 만들기 2 (java) / 크루스칼, Union-Find, DFS, BFS, 시뮬레이션 @ 크루스칼, Union-Find, DFS, BFS, 시뮬레이션 / 1h 30m 9월 삼성 SW 역량테스트 2번 문제 종이에 쓰는시간 30분을 포함해서 1시간만에 풀었는데 몇가지 실수해서 디버깅하느라 +30분 걸렸다. 다익스트라, DFS 등 여러 개념을 이용해서 풀 수 있는 좋은 문제인 것 같다. 약간 어려운 편. 문제 링크 https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 구현 방법 1. 먼저 각 섬들에 단지번호붙이기 방법.. 2020. 2. 1.