반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 가운데 글자 가져오기 java
- codeup 1020 자바
- 청년 Ai Big Data 아카데미
- 청년 AI Big Data 아카데미 13기
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- 트리의 지름 java
- 가운데 글자 가져오기 파이썬
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- 코드업 1020 자바
- 프로그래머스 가운데 글자 가져오기 python
- m1 docker
- 가운데 글자 가져오기 python
- 나누어 떨어지는 숫자 배열 java
- 최단 경로 알고리즘
- 프로그래머스 가운데 글자 가져오기 자바
- m1 docker install
- 가운데 글자 가져오기 자바
- 빅분기실기
- docker remove
- docker 삭제
- 나누어 떨어지는 숫자 배열 python
- 프로그래머스 가운데 글자 가져오기 파이썬
- docker 완전 삭제
- 코드업 1020 java
- 트리의 지름 자바
- 최소 스패닝 트리
- 최소 스패닝 트리 자바
- codeup 1020 java
- 핸즈온 머신러닝
- 빅데이터분석기사
Archives
- Today
- Total
NineTwo meet you
[백준/자바] 4386 별자리 만들기 본문
반응형
문제
도현이는 우주의 신이다. 이제 도현이는 아무렇게나 널브러져 있는 n개의 별들을 이어서 별자리를 하나 만들 것이다.
별자리의 조건은 다음과 같다.
- 별자리를 이루는 선은 서로 다른 두 별을 일직선으로 이은 형태이다.
- 모든 별들은 별자리 위의 선을 통해 서로 직/간접적으로 이어져 있어야 한다.
별들이 2차원 평면 위에 놓여 있다.
선을 하나 이을 때마다 두 별 사이의 거리만큼의 비용이 든다고 할 때, 별자리를 만드는 최소 비용을 구하시오.
입력
첫째 줄에 별의 개수 n이 주어진다. (1 ≤ n ≤ 100)
둘째 줄부터 n개의 줄에 걸쳐 각 별의 x, y좌표가 실수 형태로 주어지며, 최대 소수점 둘째 자리까지 주어진다.
좌표는 1000을 넘지 않는 양의 실수이다.
출력
첫째 줄에 정답을 출력한다.
절대/상대 오차는 10-2까지 허용한다.
예제 입력 1
3
1.0 1.0
2.0 2.0
2.0 4.0
예제 출력 1
3.41
설명
해당 문제는 다음 알고리즘 분류를 가진다.
- 그래프 이론
- 최소 스패닝 트리
최소 스패닝 트리를 해결하는 알고리즘 중 프림을 이용해 문제를 해결했다.
n개의 별자리의 x좌표와 y좌표가 주어진다.
이때 두 별자리 사이의 거리를 구하기 위해 이중 for문을 사용해 두 점 사이 거리 공식을 이용해 거리를 구한다.
for(int i = 0; i < n; i++) {
for(int j = i+1; j < n; j++) {
double x = star[i][0] - star[j][0];
double y = star[i][1] - star[j][1];
double len = Math.sqrt((Math.pow(x, 2)+(Math.pow(y, 2))));
graph[i].add(new edge(j, len));
graph[j].add(new edge(i, len));
}
}
거리를 오름차순으로 정렬해 이를 우선순위 큐에 이용한다.
static class edge implements Comparable<edge>{
int node;
double weight;
edge(int node, double weight){
this.node = node;
this.weight = weight;
}
@Override
public int compareTo(edge o) {
if(this.weight < o.weight) {
return -1;
}else {
return 1;
}
}
}
결과는 소수점 둘째 자리까지 나타내야 함을 잊지 말자
System.out.format("%.2f",result);
코드
반응형
'프로그래밍 문제 > 백준' 카테고리의 다른 글
[백준/자바] 16928 뱀과 사다리 게임 (0) | 2021.01.24 |
---|---|
[백준/자바] 14621 나만 안되는 연애 (0) | 2021.01.24 |
[백준/자바] 16398 행성 연결 (0) | 2021.01.24 |
[백준/자바] 1647 도시 분할 계획 (0) | 2021.01.21 |
[백준/자바] 1389 케빈 베이컨의 6단계 법칙 (0) | 2021.01.20 |
Comments