From cd9640f1669612ba653225e3218fa3c66fd22c6c Mon Sep 17 00:00:00 2001 From: miraekwak Date: Wed, 20 Sep 2023 16:33:40 +0900 Subject: [PATCH 1/4] BOJ_11437_LCA --- kwakmirae/BOJ_11437_LCA.java | 76 ++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 kwakmirae/BOJ_11437_LCA.java diff --git a/kwakmirae/BOJ_11437_LCA.java b/kwakmirae/BOJ_11437_LCA.java new file mode 100644 index 0000000..2833b3c --- /dev/null +++ b/kwakmirae/BOJ_11437_LCA.java @@ -0,0 +1,76 @@ +package kwakmirae; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +public class BOJ_11437_LCA { + + private static List[] list; + private static int[] parent; + private static int[] depth; + + public static void main(String[] args) throws IOException { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int N = Integer.parseInt(br.readLine()); + list = new ArrayList[N+1]; + StringTokenizer st; + for(int i=0; i<=N; i++) { + list[i] = new ArrayList(); + } + for (int i = 0; i < N-1; i++) { + st = new StringTokenizer(br.readLine()); + int v1 = Integer.parseInt(st.nextToken()); + int v2 = Integer.parseInt(st.nextToken()); + list[v1].add(v2); + list[v2].add(v1); + } + + parent = new int[N+1]; + depth = new int[N+1]; + init(1, 1, 0); + + int M = Integer.parseInt(br.readLine()); + StringBuilder sb = new StringBuilder(); + for(int i=0; i bh) { + a = parent[a]; + ah--; + } + while(bh > ah) { + b = parent[b]; + bh--; + } + while(a!=b) { + a = parent[a]; + b = parent[b]; + } + return a; + } +} \ No newline at end of file From 2c2fe9ba0bacd9d502731aba135f51326ce915ca Mon Sep 17 00:00:00 2001 From: miraekwak Date: Thu, 21 Sep 2023 10:47:12 +0900 Subject: [PATCH 2/4] =?UTF-8?q?BOJ=2010868=20=EC=B5=9C=EC=86=8C=EA=B0=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\265\234\354\206\214\352\260\222.java" | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 "kwakmirae/BOJ_10868_\354\265\234\354\206\214\352\260\222.java" diff --git "a/kwakmirae/BOJ_10868_\354\265\234\354\206\214\352\260\222.java" "b/kwakmirae/BOJ_10868_\354\265\234\354\206\214\352\260\222.java" new file mode 100644 index 0000000..3fd4e31 --- /dev/null +++ "b/kwakmirae/BOJ_10868_\354\265\234\354\206\214\352\260\222.java" @@ -0,0 +1,59 @@ +package kwakmirae; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ_10868_최소값 { + + static int N, M, LEAF; + static long tree[]; + + 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()); + int height = (int) Math.ceil(Math.log(N)/Math.log(2)) +1; + int size = (int) Math.pow(2, height); + + tree = new long[size]; + LEAF = (int)Math.pow(2, height-1); + for(int i=LEAF; i right) return Long.MAX_VALUE; + + if(left <= start && end <= right) { + return tree[node]; + } + + int mid = (start + end)/2; + return Math.min(search(node*2, start, mid, left, right), search(node*2+1, mid+1, end, left, right)); + } + + public static long init(int idx) { + if(idx >= LEAF) { + return tree[idx]; + } + + return tree[idx] = Math.min(init(idx*2), init(idx*2+1)); + } + + +} From 59194a45e63fc6f57e63c0c0dfe652ea384b60ad Mon Sep 17 00:00:00 2001 From: miraekwak Date: Fri, 22 Sep 2023 08:55:07 +0900 Subject: [PATCH 3/4] =?UTF-8?q?gold2:=20=EA=B6=81=EA=B8=88=ED=95=9C=20?= =?UTF-8?q?=EB=AF=BC=ED=98=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\225\234\353\257\274\355\230\270.java" | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 "kwakmirae/BOJ_1507_\352\266\201\352\270\210\355\225\234\353\257\274\355\230\270.java" diff --git "a/kwakmirae/BOJ_1507_\352\266\201\352\270\210\355\225\234\353\257\274\355\230\270.java" "b/kwakmirae/BOJ_1507_\352\266\201\352\270\210\355\225\234\353\257\274\355\230\270.java" new file mode 100644 index 0000000..cb31dcd --- /dev/null +++ "b/kwakmirae/BOJ_1507_\352\266\201\352\270\210\355\225\234\353\257\274\355\230\270.java" @@ -0,0 +1,51 @@ +package kwakmirae; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ_1507_궁금한민호 { + + private static int N, distance[][], result[][]; + + public static void main(String[] args) throws IOException { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + StringTokenizer st; + + distance = new int[N][N]; + result = new int[N][N]; + for(int i=0; i distance[i][k] + distance[k][j]) { + System.out.println(-1); + return; + } + } + } + } + + int sum = 0; + for(int i=0; i Date: Fri, 22 Sep 2023 10:02:29 +0900 Subject: [PATCH 4/4] =?UTF-8?q?BOJ=2011779=20=EC=B5=9C=EC=86=8C=EB=B9=84?= =?UTF-8?q?=EC=9A=A9=EA=B5=AC=ED=95=98=EA=B8=B02?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...352\265\254\355\225\230\352\270\2602.java" | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 "kwakmirae/BOJ_11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602.java" diff --git "a/kwakmirae/BOJ_11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602.java" "b/kwakmirae/BOJ_11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602.java" new file mode 100644 index 0000000..16a9d8e --- /dev/null +++ "b/kwakmirae/BOJ_11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602.java" @@ -0,0 +1,81 @@ +package kwakmirae; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.PriorityQueue; +import java.util.StringTokenizer; + +public class BOJ_11779_최소비용구하기2 { + + static class Node implements Comparable{ + int vertex, weight; + Node next; + public Node(int vertex, int weight, Node next) { + this.vertex = vertex; + this.weight = weight; + this.next = next; + } + @Override + public int compareTo(Node o) { + return weight - o.weight; + } + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int N = Integer.parseInt(br.readLine()); + int M = Integer.parseInt(br.readLine()); + + StringTokenizer st; + Node[] adjList = new Node[N+1]; + for(int i=0; i queue = new PriorityQueue(); + queue.add(new Node(start, 0, null)); + while(true) { + // 1. 최소 비용 경로를 가지는 vertex 찾기 + Node curr = queue.poll(); + + // 2. 방문 처리하기 + if(distance[curr.vertex] < curr.weight) continue; + if(curr.vertex == end) break; + + // 3. 해당 vertex와 연결된 edge를 보면서 최소 비용 갱신하기 + for(Node temp=adjList[curr.vertex]; temp != null; temp = temp.next) { + if(distance[temp.vertex] > distance[curr.vertex]+temp.weight) { + distance[temp.vertex] = distance[curr.vertex]+temp.weight; + selected[temp.vertex] = curr.vertex; + queue.add(new Node(temp.vertex, distance[temp.vertex], null)); + } + } + } + + StringBuilder sb = new StringBuilder(); + int idx = end, cnt = 0; + while(idx != 0) { + sb.insert(0, idx+" "); + idx = selected[idx]; + cnt++; + } + System.out.println(distance[end]); + System.out.println(cnt); + System.out.println(sb); + } +}