From f5fac544136bf7e8a72dcc9e9370d6d392415b7d Mon Sep 17 00:00:00 2001 From: baexxbin Date: Sun, 6 Apr 2025 21:30:25 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EB=B0=B0=EC=88=98=EB=B9=88:=20[BOJ]=201795?= =?UTF-8?q?1=20=ED=9D=A9=EB=82=A0=EB=A6=AC=EB=8A=94=20=EC=8B=9C=ED=97=98?= =?UTF-8?q?=EC=A7=80=20=EC=86=8D=EC=97=90=EC=84=9C=20=EB=82=B4=20=ED=8F=89?= =?UTF-8?q?=EC=A0=90=EC=9D=B4=20=EB=8A=90=EA=BB=B4=EC=A7=84=EA=B1=B0?= =?UTF-8?q?=EC=95=BC=5F250406?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/15001-20000353円262円210円/SB_17951.java" | 53 +++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 "BOJ/15001-20000353円262円210円/SB_17951.java" diff --git "a/BOJ/15001-20000353円262円210円/SB_17951.java" "b/BOJ/15001-20000353円262円210円/SB_17951.java" new file mode 100644 index 00000000..a017c84c --- /dev/null +++ "b/BOJ/15001-20000353円262円210円/SB_17951.java" @@ -0,0 +1,53 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +// 최솟값의 최댓값 구하기 +public class SB_17951 { + static int N, K; + static int[] arr; + + private static boolean canDiv(int target) { + int cnt = 0; + int sum = 0; + for (int a : arr) { + sum+=a; + if (sum>= target) { + cnt++; + sum = 0; + } + } + return cnt>= K; + } + 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()); + K = Integer.parseInt(st.nextToken()); + + arr = new int[N]; + int mx = 0; + st = new StringTokenizer(br.readLine()); + for (int i = 0; i < N; i++) { + arr[i] = Integer.parseInt(st.nextToken()); + mx += arr[i]; + } + + int l = 0; + int h = mx; + int ans = 0; + while (l <= h) { + int mid = (l + h) / 2; + if (canDiv(mid)) { + ans = mid; + l = mid+1; + }else { + h = mid-1; + } + } + System.out.println(ans); + } + +} From 60f403d334f9570fce3f3fd2acd90b27ee4038c2 Mon Sep 17 00:00:00 2001 From: baexxbin Date: Sun, 6 Apr 2025 21:32:46 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EB=B0=B0=EC=88=98=EB=B9=88:=20[BOJ]=209694?= =?UTF-8?q?=20=EB=AC=B4=EC=97=87=EC=9D=84=20=EC=95=84=EB=8A=90=EB=83=90?= =?UTF-8?q?=EA=B0=80=20=EC=95=84=EB=8B=88=EB=9D=BC=20=EB=88=84=EA=B5=AC?= =?UTF-8?q?=EB=A5=BC=20=EC=95=84=EB=8A=90=EB=83=90=EA=B0=80=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=EB=8B=A4=5F250406?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/5001-10000353円262円210円/SB_9694.java" | 102 ++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 "BOJ/5001-10000353円262円210円/SB_9694.java" diff --git "a/BOJ/5001-10000353円262円210円/SB_9694.java" "b/BOJ/5001-10000353円262円210円/SB_9694.java" new file mode 100644 index 00000000..c504a461 --- /dev/null +++ "b/BOJ/5001-10000353円262円210円/SB_9694.java" @@ -0,0 +1,102 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.*; + +public class SB_9694 { + static ArrayList> adj; + static int[] dist; + static int[] path; + static Integer INF = 987654321; + + private static int[] dijsktra(int M) { + dist[0] = 0; + + PriorityQueue pq = new PriorityQueue(); + pq.offer(new Node(0, 0)); + + while (!pq.isEmpty()) { + Node cur = pq.poll(); + if (cur.cost> dist[cur.idx]) continue; + + for (Node nxt : adj.get(cur.idx)) { + if (nxt.cost + dist[cur.idx] < dist[nxt.idx]) { + dist[nxt.idx] = nxt.cost + dist[cur.idx]; + path[nxt.idx] = cur.idx; + pq.offer(new Node(nxt.idx, dist[nxt.idx])); + } + } + } + return path; + } + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + StringBuilder sb = new StringBuilder(); + + int T = Integer.parseInt(br.readLine()); + + int turn = 1; + while (T--> 0) { + st = new StringTokenizer(br.readLine()); + int N = Integer.parseInt(st.nextToken()); + int M = Integer.parseInt(st.nextToken()); + + dist = new int[M]; + Arrays.fill(dist, INF); + path = new int[M]; + + adj = new ArrayList(); + for (int i = 0; i < M; i++) { + adj.add(new ArrayList()); + } + + for (int i = 0; i < N; i++) { + st = new StringTokenizer(br.readLine()); + int u = Integer.parseInt(st.nextToken()); + int v = Integer.parseInt(st.nextToken()); + int c = Integer.parseInt(st.nextToken()); + + adj.get(u).add(new Node(v, c)); + adj.get(v).add(new Node(u, c)); + } + + int[] path = dijsktra(M); + + if (dist[M-1]==INF){ + sb.append("Case #").append(turn++).append(": ").append("-1\n"); + }else{ + List ans = new ArrayList(); + int now = M-1; + while (now != 0) { + ans.add(now); + now = path[now]; + } + ans.add(0); + Collections.reverse(ans); + + sb.append("Case #").append(turn++).append(": "); + for (Integer i : ans) { + sb.append(i).append(" "); + } + sb.append('\n'); + } + } + + System.out.println(sb); + } + + static class Node implements Comparable{ + int idx, cost; + + Node(int idx, int cost) { + this.idx = idx; + this.cost = cost; + } + + @Override + public int compareTo(Node o) { + return this.cost - o.cost; + } + } +} \ No newline at end of file

AltStyle によって変換されたページ (->オリジナル) /