diff --git "a/week37/\354\235\264\354\203\201\354\226\265/backjoon/DFS\354\231\200BFS.java" "b/week37/\354\235\264\354\203\201\354\226\265/backjoon/DFS\354\231\200BFS.java" new file mode 100644 index 0000000..6d70f0d --- /dev/null +++ "b/week37/\354\235\264\354\203\201\354\226\265/backjoon/DFS\354\231\200BFS.java" @@ -0,0 +1,76 @@ +import java.util.*; +import java.io.*; + + +public class Main{ + + static int N,M,V; + static List[] graph; + + static boolean[] visited; + + public static void main(String[] args) throws IOException{ + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + N = Integer.parseInt(st.nextToken()); + M = Integer.parseInt(st.nextToken()); + V = Integer.parseInt(st.nextToken()); + + graph = new ArrayList[N+1]; + for(int i = 1; i <= N; i++){ + graph[i] = new ArrayList<>(); + } + + for(int i = 0; i < M; i++){ + st = new StringTokenizer(br.readLine()); + int a = Integer.parseInt(st.nextToken()); + int b = Integer.parseInt(st.nextToken()); + + graph[a].add(b); + graph[b].add(a); + } + + for(int i = 1; i <= N; i++){ + Collections.sort(graph[i]); + } + + visited = new boolean[N+1]; + dfs(V); + System.out.println(); + + visited = new boolean[N+1]; + bfs(V); + } + + static void dfs(int v){ + visited[v] = true; + System.out.print(v + " "); + + for(int next : graph[v]){ + if(!visited[next]){ + dfs(next); + } + } + + } + static void bfs(int start){ + Queue q = new LinkedList<>(); + q.offer(start); + visited[start] = true; + + while(!q.isEmpty()){ + + int cur = q.poll(); + System.out.print(cur + " "); + + for(int next : graph[cur]){ + if(!visited[next]){ + visited[next] = true; + q.offer(next); + } + } + } + } +} diff --git "a/week37/\354\235\264\354\203\201\354\226\265/backjoon/\354\244\204_\354\204\270\354\232\260\352\270\260.java" "b/week37/\354\235\264\354\203\201\354\226\265/backjoon/\354\244\204_\354\204\270\354\232\260\352\270\260.java" new file mode 100644 index 0000000..0ebd8d0 --- /dev/null +++ "b/week37/\354\235\264\354\203\201\354\226\265/backjoon/\354\244\204_\354\204\270\354\232\260\352\270\260.java" @@ -0,0 +1,60 @@ +import java.util.*; +import java.io.*; + +public class Main { + + static int N, M; + static List[] graph; + static int[] indegree; + + public static void main(String[] args) throws IOException { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + N = Integer.parseInt(st.nextToken()); + M = Integer.parseInt(st.nextToken()); + + graph = new ArrayList[N + 1]; + indegree = new int[N + 1]; + + for (int i = 1; i <= N; i++) { + graph[i] = new ArrayList<>(); + } + + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + int A = Integer.parseInt(st.nextToken()); + int B = Integer.parseInt(st.nextToken()); + + // A -> B + graph[A].add(B); + indegree[B]++; + } + + bfs(); + } + + static void bfs() { + Queue q = new LinkedList<>(); + + // 위상이 0 인 애 부터 줄을 선다. + for (int i = 1; i <= N; i++) { + if (indegree[i] == 0) { + q.offer(i); + } + } + + while (!q.isEmpty()) { + int cur = q.poll(); + System.out.print(cur + " "); + + for (int next : graph[cur]) { + indegree[next]--; + if (indegree[next] == 0) { + q.offer(next); + } + } + } + } +} diff --git "a/week37/\354\235\264\354\203\201\354\226\265/backjoon/\355\204\260\353\240\233.java" "b/week37/\354\235\264\354\203\201\354\226\265/backjoon/\355\204\260\353\240\233.java" new file mode 100644 index 0000000..2e2d003 --- /dev/null +++ "b/week37/\354\235\264\354\203\201\354\226\265/backjoon/\355\204\260\353\240\233.java" @@ -0,0 +1,55 @@ +// (1) 같은 원 -1 +// (2) 교점이 없음 0 +// (3) 원 안에 원 0 +// (4) 한 점에서 만남 1 +// (5) 두 점에서 만남 + +import java.util.*; +import java.io.*; + +public class Main{ + public static void main(String[] args) throws IOException{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringBuilder sb = new StringBuilder(); + + int N = Integer.parseInt(br.readLine()); + + for(int i = 0; i < N; i++){ + StringTokenizer st = new StringTokenizer(br.readLine()); + + int x1 = Integer.parseInt(st.nextToken()); + int y1 = Integer.parseInt(st.nextToken()); + int r1 = Integer.parseInt(st.nextToken()); + + int x2 = Integer.parseInt(st.nextToken()); + int y2 = Integer.parseInt(st.nextToken()); + int r2 = Integer.parseInt(st.nextToken()); + + int result = circle_option(x1, y1, r1 , x2, y2, r2); + sb.append(result).append('\n'); + } + System.out.print(sb); + } + + public static int circle_option(int x1, int y1, int r1, int x2, int y2, int r2){ + + int dx = x1 - x2; + int dy = y1 - y2; + int d = dx*dx + dy*dy; + + int sum = r1 + r2; + int diff = Math.abs(r1 - r2); + + if (d == 0 && r1 == r2) { + return -1; + } else if (d > sum*sum) { + return 0; + } else if (d < diff*diff) { + return 0; + } else if (d == sum*sum || d == diff*diff) { + return 1; + } else { + return 2; + } + } +} diff --git "a/week37/\354\235\264\354\203\201\354\226\265/backjoon/\355\214\214\354\235\274_\355\225\251\354\271\230\352\270\2603.java" "b/week37/\354\235\264\354\203\201\354\226\265/backjoon/\355\214\214\354\235\274_\355\225\251\354\271\230\352\270\2603.java" new file mode 100644 index 0000000..28cd795 --- /dev/null +++ "b/week37/\354\235\264\354\203\201\354\226\265/backjoon/\355\214\214\354\235\274_\355\225\251\354\271\230\352\270\2603.java" @@ -0,0 +1,41 @@ +import java.util.*; +import java.io.*; + +public class Main { + + static int T; + static int K; + + public static void main(String[] args) throws IOException { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + T = Integer.parseInt(br.readLine()); + + for (int t = 0; t < T; t++) { + + PriorityQueue pq = new PriorityQueue<>(); + + K = Integer.parseInt(br.readLine()); + st = new StringTokenizer(br.readLine()); + + for (int i = 0; i < K; i++) { + pq.offer(Long.parseLong(st.nextToken())); + } + + long sum = 0; + + while (pq.size() > 1) { + long a = pq.poll(); + long b = pq.poll(); + + long part = a + b; + sum += part; + pq.offer(part); + } + + System.out.println(sum); + } + } +}