From 57074260bc982327334ba53236efb6441f5ff23a Mon Sep 17 00:00:00 2001 From: leesangeok Date: Thu, 25 Dec 2025 23:51:38 +0900 Subject: [PATCH] 34week --- ...353\221\220_\354\232\251\354\225\241.java" | 43 +++++++++++++++ ...\353\240\254\355\225\230\352\270\260.java" | 29 ++++++++++ ...354\243\274_\354\213\234\354\213\235.java" | 31 +++++++++++ ...\354\240\204\354\264\210\353\260\245.java" | 53 +++++++++++++++++++ 4 files changed, 156 insertions(+) create mode 100644 "week34/\354\235\264\354\203\201\354\226\265/backjoon/\353\221\220_\354\232\251\354\225\241.java" create mode 100644 "week34/\354\235\264\354\203\201\354\226\265/backjoon/\354\271\264\353\223\234_\354\240\225\353\240\254\355\225\230\352\270\260.java" create mode 100644 "week34/\354\235\264\354\203\201\354\226\265/backjoon/\355\217\254\353\217\204\354\243\274_\354\213\234\354\213\235.java" create mode 100644 "week34/\354\235\264\354\203\201\354\226\265/backjoon/\355\232\214\354\240\204\354\264\210\353\260\245.java" diff --git "a/week34/\354\235\264\354\203\201\354\226\265/backjoon/\353\221\220_\354\232\251\354\225\241.java" "b/week34/\354\235\264\354\203\201\354\226\265/backjoon/\353\221\220_\354\232\251\354\225\241.java" new file mode 100644 index 0000000..1d77067 --- /dev/null +++ "b/week34/\354\235\264\354\203\201\354\226\265/backjoon/\353\221\220_\354\232\251\354\225\241.java" @@ -0,0 +1,43 @@ +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()); + + long[] arr = new long[N]; + + StringTokenizer st = new StringTokenizer(br.readLine()); + for (int i = 0; i < N; i++) { + arr[i] = Long.parseLong(st.nextToken()); + } + + Arrays.sort(arr); + + int left = 0; + int right = N - 1; + + long best = Long.MAX_VALUE; + long ans1 = 0, ans2 = 0; + + while (left < right) { + long sum = arr[left] + arr[right]; + + if (Math.abs(sum) < best) { + best = Math.abs(sum); + ans1 = arr[left]; + ans2 = arr[right]; + } + + if (sum < 0) { + left++; + } else { + right--; + } + } + + System.out.print(ans1 + " "+ ans2); + } +} diff --git "a/week34/\354\235\264\354\203\201\354\226\265/backjoon/\354\271\264\353\223\234_\354\240\225\353\240\254\355\225\230\352\270\260.java" "b/week34/\354\235\264\354\203\201\354\226\265/backjoon/\354\271\264\353\223\234_\354\240\225\353\240\254\355\225\230\352\270\260.java" new file mode 100644 index 0000000..a6fe5b6 --- /dev/null +++ "b/week34/\354\235\264\354\203\201\354\226\265/backjoon/\354\271\264\353\223\234_\354\240\225\353\240\254\355\225\230\352\270\260.java" @@ -0,0 +1,29 @@ +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()); + PriorityQueue pq = new PriorityQueue<>(); + + for (int i = 0; i < N; i++) { + int x = Integer.parseInt(br.readLine()); + pq.add(x); + } + + int sum = 0; + + while (pq.size() > 1) { + int a = pq.poll(); + int b = pq.poll(); + int part_sum = a + b; + + sum += part_sum; + pq.add(part_sum); + } + + System.out.print(sum); + } +} diff --git "a/week34/\354\235\264\354\203\201\354\226\265/backjoon/\355\217\254\353\217\204\354\243\274_\354\213\234\354\213\235.java" "b/week34/\354\235\264\354\203\201\354\226\265/backjoon/\355\217\254\353\217\204\354\243\274_\354\213\234\354\213\235.java" new file mode 100644 index 0000000..f9d8105 --- /dev/null +++ "b/week34/\354\235\264\354\203\201\354\226\265/backjoon/\355\217\254\353\217\204\354\243\274_\354\213\234\354\213\235.java" @@ -0,0 +1,31 @@ +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()); + int[] arr = new int[N+1]; + + for (int i = 1; i < N+1; i++) { + arr[i] = Integer.parseInt(br.readLine()); + } + + int[] dp = new int[N + 1]; + dp[1] = arr[1]; + if( N >= 2 ) dp[2] = arr[1] + arr[2]; + + for(int i = 3; i <= N; i++){ + dp[i] = Math.max( + dp[i-1], + Math.max( + dp[i-2] + arr[i], + dp[i-3] + arr[i-1] + arr[i] + ) + ); + } + + System.out.print(dp[N]); + } +} diff --git "a/week34/\354\235\264\354\203\201\354\226\265/backjoon/\355\232\214\354\240\204\354\264\210\353\260\245.java" "b/week34/\354\235\264\354\203\201\354\226\265/backjoon/\355\232\214\354\240\204\354\264\210\353\260\245.java" new file mode 100644 index 0000000..3be76db --- /dev/null +++ "b/week34/\354\235\264\354\203\201\354\226\265/backjoon/\355\232\214\354\240\204\354\264\210\353\260\245.java" @@ -0,0 +1,53 @@ +import java.io.*; +import java.util.*; + +public class Main { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + int N = Integer.parseInt(st.nextToken()); + int M = Integer.parseInt(st.nextToken()); + + // 초밥 종류 , 해당 초밥을 원하는 손님들 (번호 작은 순) + Map> want = new HashMap<>(); + + // 각 손님이 먹은 초밥 개수 + int[] answer = new int[N + 1]; + + for (int i = 1; i <= N; i++) { + st = new StringTokenizer(br.readLine()); + int k = Integer.parseInt(st.nextToken()); + + for (int j = 0; j < k; j++) { + int sushi = Integer.parseInt(st.nextToken()); + + if (!want.containsKey(sushi)) { + want.put(sushi, new PriorityQueue<>()); + } + want.get(sushi).add(i); + } + } + + // 만들어지는 초밥 처리 + st = new StringTokenizer(br.readLine()); + for (int i = 0; i < M; i++) { + int sushi = Integer.parseInt(st.nextToken()); + + if (want.containsKey(sushi)) { + PriorityQueue pq = want.get(sushi); + + if (!pq.isEmpty()) { + int who = pq.poll(); // 가장 앞 손님이 먹음 + answer[who]++; + } + } + } + + StringBuilder sb = new StringBuilder(); + for (int i = 1; i <= N; i++) { + sb.append(answer[i]).append(" "); + } + System.out.println(sb.toString().trim()); + } +}