Skip to content

Commit 6e4852f

Browse files
authored
Merge pull request #209 from JavaCote/sangeok
이상억 37주차
2 parents 0fd496a + cfe08ec commit 6e4852f

File tree

4 files changed

+232
-0
lines changed

4 files changed

+232
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import java.util.*;
2+
import java.io.*;
3+
4+
5+
public class Main{
6+
7+
static int N,M,V;
8+
static List<Integer>[] graph;
9+
10+
static boolean[] visited;
11+
12+
public static void main(String[] args) throws IOException{
13+
14+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
15+
StringTokenizer st = new StringTokenizer(br.readLine());
16+
17+
N = Integer.parseInt(st.nextToken());
18+
M = Integer.parseInt(st.nextToken());
19+
V = Integer.parseInt(st.nextToken());
20+
21+
graph = new ArrayList[N+1];
22+
for(int i = 1; i <= N; i++){
23+
graph[i] = new ArrayList<>();
24+
}
25+
26+
for(int i = 0; i < M; i++){
27+
st = new StringTokenizer(br.readLine());
28+
int a = Integer.parseInt(st.nextToken());
29+
int b = Integer.parseInt(st.nextToken());
30+
31+
graph[a].add(b);
32+
graph[b].add(a);
33+
}
34+
35+
for(int i = 1; i <= N; i++){
36+
Collections.sort(graph[i]);
37+
}
38+
39+
visited = new boolean[N+1];
40+
dfs(V);
41+
System.out.println();
42+
43+
visited = new boolean[N+1];
44+
bfs(V);
45+
}
46+
47+
static void dfs(int v){
48+
visited[v] = true;
49+
System.out.print(v + " ");
50+
51+
for(int next : graph[v]){
52+
if(!visited[next]){
53+
dfs(next);
54+
}
55+
}
56+
57+
}
58+
static void bfs(int start){
59+
Queue<Integer> q = new LinkedList<>();
60+
q.offer(start);
61+
visited[start] = true;
62+
63+
while(!q.isEmpty()){
64+
65+
int cur = q.poll();
66+
System.out.print(cur + " ");
67+
68+
for(int next : graph[cur]){
69+
if(!visited[next]){
70+
visited[next] = true;
71+
q.offer(next);
72+
}
73+
}
74+
}
75+
}
76+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import java.util.*;
2+
import java.io.*;
3+
4+
public class Main {
5+
6+
static int N, M;
7+
static List<Integer>[] graph;
8+
static int[] indegree;
9+
10+
public static void main(String[] args) throws IOException {
11+
12+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
13+
StringTokenizer st = new StringTokenizer(br.readLine());
14+
15+
N = Integer.parseInt(st.nextToken());
16+
M = Integer.parseInt(st.nextToken());
17+
18+
graph = new ArrayList[N + 1];
19+
indegree = new int[N + 1];
20+
21+
for (int i = 1; i <= N; i++) {
22+
graph[i] = new ArrayList<>();
23+
}
24+
25+
for (int i = 0; i < M; i++) {
26+
st = new StringTokenizer(br.readLine());
27+
int A = Integer.parseInt(st.nextToken());
28+
int B = Integer.parseInt(st.nextToken());
29+
30+
// A -> B
31+
graph[A].add(B);
32+
indegree[B]++;
33+
}
34+
35+
bfs();
36+
}
37+
38+
static void bfs() {
39+
Queue<Integer> q = new LinkedList<>();
40+
41+
// 위상이 0 인 애 부터 줄을 선다.
42+
for (int i = 1; i <= N; i++) {
43+
if (indegree[i] == 0) {
44+
q.offer(i);
45+
}
46+
}
47+
48+
while (!q.isEmpty()) {
49+
int cur = q.poll();
50+
System.out.print(cur + " ");
51+
52+
for (int next : graph[cur]) {
53+
indegree[next]--;
54+
if (indegree[next] == 0) {
55+
q.offer(next);
56+
}
57+
}
58+
}
59+
}
60+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// (1) 같은 원 -1
2+
// (2) 교점이 없음 0
3+
// (3) 원 안에 원 0
4+
// (4) 한 점에서 만남 1
5+
// (5) 두 점에서 만남
6+
7+
import java.util.*;
8+
import java.io.*;
9+
10+
public class Main{
11+
public static void main(String[] args) throws IOException{
12+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
13+
StringBuilder sb = new StringBuilder();
14+
15+
int N = Integer.parseInt(br.readLine());
16+
17+
for(int i = 0; i < N; i++){
18+
StringTokenizer st = new StringTokenizer(br.readLine());
19+
20+
int x1 = Integer.parseInt(st.nextToken());
21+
int y1 = Integer.parseInt(st.nextToken());
22+
int r1 = Integer.parseInt(st.nextToken());
23+
24+
int x2 = Integer.parseInt(st.nextToken());
25+
int y2 = Integer.parseInt(st.nextToken());
26+
int r2 = Integer.parseInt(st.nextToken());
27+
28+
int result = circle_option(x1, y1, r1 , x2, y2, r2);
29+
sb.append(result).append('\n');
30+
}
31+
System.out.print(sb);
32+
}
33+
34+
public static int circle_option(int x1, int y1, int r1, int x2, int y2, int r2){
35+
36+
int dx = x1 - x2;
37+
int dy = y1 - y2;
38+
int d = dx*dx + dy*dy;
39+
40+
int sum = r1 + r2;
41+
int diff = Math.abs(r1 - r2);
42+
43+
if (d == 0 && r1 == r2) {
44+
return -1;
45+
} else if (d > sum*sum) {
46+
return 0;
47+
} else if (d < diff*diff) {
48+
return 0;
49+
} else if (d == sum*sum || d == diff*diff) {
50+
return 1;
51+
} else {
52+
return 2;
53+
}
54+
}
55+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import java.util.*;
2+
import java.io.*;
3+
4+
public class Main {
5+
6+
static int T;
7+
static int K;
8+
9+
public static void main(String[] args) throws IOException {
10+
11+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
12+
StringTokenizer st;
13+
14+
T = Integer.parseInt(br.readLine());
15+
16+
for (int t = 0; t < T; t++) {
17+
18+
PriorityQueue<Long> pq = new PriorityQueue<>();
19+
20+
K = Integer.parseInt(br.readLine());
21+
st = new StringTokenizer(br.readLine());
22+
23+
for (int i = 0; i < K; i++) {
24+
pq.offer(Long.parseLong(st.nextToken()));
25+
}
26+
27+
long sum = 0;
28+
29+
while (pq.size() > 1) {
30+
long a = pq.poll();
31+
long b = pq.poll();
32+
33+
long part = a + b;
34+
sum += part;
35+
pq.offer(part);
36+
}
37+
38+
System.out.println(sum);
39+
}
40+
}
41+
}

0 commit comments

Comments
 (0)