From 311606fbcb22d9c4fdd50c5f8808a7094e11a755 Mon Sep 17 00:00:00 2001 From: leesangeok Date: Thu, 5 Feb 2026 21:31:09 +0900 Subject: [PATCH] 40week --- ...\230\220\353\212\224_0.5\353\260\260.java" | 17 +++++ ...\352\263\240\353\245\264\352\270\260.java" | 56 ++++++++++++++ ...\352\262\260\355\225\230\352\270\260.java" | 56 ++++++++++++++ ...\355\212\270\353\236\230\355\224\275.java" | 73 +++++++++++++++++++ 4 files changed, 202 insertions(+) create mode 100644 "week40/\354\235\264\354\203\201\354\226\265/backjoon/2\353\260\260_\353\230\220\353\212\224_0.5\353\260\260.java" create mode 100644 "week40/\354\235\264\354\203\201\354\226\265/backjoon/\354\210\253\354\236\220_\352\263\240\353\245\264\352\270\260.java" create mode 100644 "week40/\354\235\264\354\203\201\354\226\265/progarmmers/\354\204\254_\354\227\260\352\262\260\355\225\230\352\270\260.java" create mode 100644 "week40/\354\235\264\354\203\201\354\226\265/progarmmers/\354\266\224\354\204\235_\355\212\270\353\236\230\355\224\275.java" diff --git "a/week40/\354\235\264\354\203\201\354\226\265/backjoon/2\353\260\260_\353\230\220\353\212\224_0.5\353\260\260.java" "b/week40/\354\235\264\354\203\201\354\226\265/backjoon/2\353\260\260_\353\230\220\353\212\224_0.5\353\260\260.java" new file mode 100644 index 0000000..b129ba2 --- /dev/null +++ "b/week40/\354\235\264\354\203\201\354\226\265/backjoon/2\353\260\260_\353\230\220\353\212\224_0.5\353\260\260.java" @@ -0,0 +1,17 @@ +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)); + + + int N = Integer.parseInt(br.readLine()); + + + + } +} + + +// \ No newline at end of file diff --git "a/week40/\354\235\264\354\203\201\354\226\265/backjoon/\354\210\253\354\236\220_\352\263\240\353\245\264\352\270\260.java" "b/week40/\354\235\264\354\203\201\354\226\265/backjoon/\354\210\253\354\236\220_\352\263\240\353\245\264\352\270\260.java" new file mode 100644 index 0000000..0b5a8dc --- /dev/null +++ "b/week40/\354\235\264\354\203\201\354\226\265/backjoon/\354\210\253\354\236\220_\352\263\240\353\245\264\352\270\260.java" @@ -0,0 +1,56 @@ +import java.util.*; +import java.io.*; + +public class Main { + + static int[] next; + static boolean[] visited; + static boolean[] finished; + static List answer = new ArrayList<>(); + + static void dfs(int cur) { + visited[cur] = true; + int nxt = next[cur]; + + if (!visited[nxt]) { + dfs(nxt); + } + else if (!finished[nxt]) { + int temp = nxt; + answer.add(temp); + + while (temp != cur) { + temp = next[temp]; + answer.add(temp); + } + } + + finished[cur] = true; + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int N = Integer.parseInt(br.readLine()); + + next = new int[N + 1]; + visited = new boolean[N + 1]; + finished = new boolean[N + 1]; + + for (int i = 1; i <= N; i++) { + next[i] = Integer.parseInt(br.readLine()); + } + + for (int i = 1; i <= N; i++) { + if (!visited[i]) { + dfs(i); + } + } + + Collections.sort(answer); + System.out.println(answer.size()); + for (int x : answer) { + System.out.println(x); + } + } +} diff --git "a/week40/\354\235\264\354\203\201\354\226\265/progarmmers/\354\204\254_\354\227\260\352\262\260\355\225\230\352\270\260.java" "b/week40/\354\235\264\354\203\201\354\226\265/progarmmers/\354\204\254_\354\227\260\352\262\260\355\225\230\352\270\260.java" new file mode 100644 index 0000000..bf2d847 --- /dev/null +++ "b/week40/\354\235\264\354\203\201\354\226\265/progarmmers/\354\204\254_\354\227\260\352\262\260\355\225\230\352\270\260.java" @@ -0,0 +1,56 @@ +import java.util.*; + +class Solution { + + class Edge { + int to; + int cost; + + Edge(int to, int cost) { + this.to = to; + this.cost = cost; + } + } + + public int solution(int n, int[][] costs) { + + List[] graph = new ArrayList[n]; + for (int i = 0; i < n; i++) { + graph[i] = new ArrayList<>(); + } + + for (int[] c : costs) { + int from = c[0]; + int to = c[1]; + int cost = c[2]; + + graph[from].add(new Edge(to, cost)); + graph[to].add(new Edge(from, cost)); + } + + boolean[] visited = new boolean[n]; + PriorityQueue pq = new PriorityQueue<>( + (a, b) -> a.cost - b.cost + ); + + pq.add(new Edge(0, 0)); + int answer = 0; + + while (!pq.isEmpty()) { + Edge cur = pq.poll(); + + if (visited[cur.to]) continue; + + visited[cur.to] = true; + answer += cur.cost; + + for (Edge next : graph[cur.to]) { + if (!visited[next.to]) { + pq.add(next); + } + } + } + + return answer; + } +} diff --git "a/week40/\354\235\264\354\203\201\354\226\265/progarmmers/\354\266\224\354\204\235_\355\212\270\353\236\230\355\224\275.java" "b/week40/\354\235\264\354\203\201\354\226\265/progarmmers/\354\266\224\354\204\235_\355\212\270\353\236\230\355\224\275.java" new file mode 100644 index 0000000..4547d04 --- /dev/null +++ "b/week40/\354\235\264\354\203\201\354\226\265/progarmmers/\354\266\224\354\204\235_\355\212\270\353\236\230\355\224\275.java" @@ -0,0 +1,73 @@ +import java.util.*; + +class Solution { + + static class Log{ + int start; + int end; + + Log(int start, int end){ + this.start = start; + this.end = end; + } + } + + + static Log parse(String line){ + String[] parts = line.split(" "); + + String[] time = parts[1].split(":"); + + int hh = Integer.parseInt(time[0]); + int mm = Integer.parseInt(time[1]); + + String[] sec = time[2].split("\\."); + int ss = Integer.parseInt(sec[0]); + int ms = Integer.parseInt(sec[1]); + + int endMs = hh * 3600000 + + mm * 60000 + + ss * 1000 + + ms; + + double durationSec = Double.parseDouble( + parts[2].substring(0, parts[2].length() - 1) + ); + + int durationMs = (int)(durationSec * 1000); + + int startMs = endMs - durationMs + 1; + + return new Log(startMs, endMs); + + } + + + public int solution(String[] lines) { + int answer = 0; + + List logs = new ArrayList<>(); + + for(String line : lines){ + logs.add(parse(line)); + } + + for(Log base : logs){ + int windowStart = base.end; + int windowEnd = base.end + 999; + + int count = 0; + for(Log target : logs){ + if(target.start <= windowEnd && target.end >= windowStart){ + count ++; + } + } + + answer = Math.max(answer, count); + } + return answer; + } +} + +// window : [======] +// target : [-----------]