넘 어려웠다./....
#include <string>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
int solution(int n, vector<vector<int>> costs) {
int answer = 0;
int min = INT_MAX;
int y, x;
vector<bool> check(n);
vector<vector<int>> map(n, vector<int>(n));
for(int idx = 0; idx < costs.size(); idx++) {
map[costs[idx][0]][costs[idx][1]] = costs[idx][2];
map[costs[idx][1]][costs[idx][0]] = costs[idx][2];
if(min <= costs[idx][2]) { continue; }
min = costs[idx][2];
y = costs[idx][0], x = costs[idx][1];
}
check[y] = check[x] = true;
answer += min;
while(true) {
min = INT_MAX;
for(int i = 0; i < n; i++) {
if(!check[i]) { continue; }
for(int idx = 0; idx < n; idx++) {
if(!map[i][idx] || map[i][idx] >= min || check[idx]) { continue; }
min = map[i][idx];
y = i, x = idx;
}
}
check[y] = check[x] = true;
answer += min;
for(int idx = 0; idx < n; idx++) {
if(!check[idx]) { break; }
if(idx == n - 1) { return answer; }
}
}
return answer;
}
|
cs |
'problem solving' 카테고리의 다른 글
[LeetCode]#2 Add Two Numbers (0) | 2020.03.14 |
---|---|
[프로그래머스]디스크 컨트롤러 (0) | 2020.03.14 |
[프로그래머스]이중우선순위큐 (0) | 2020.03.13 |
[미완]디스크 분할 (0) | 2020.03.13 |
[프로그래머스]라면공장 (0) | 2020.03.13 |