From f1072e33f95db9c662e977ea2ad6b2d027145ab7 Mon Sep 17 00:00:00 2001 From: twalla26 Date: Thu, 9 Jul 2026 15:01:40 +0900 Subject: [PATCH 1/7] =?UTF-8?q?week1/=EB=A9=80=EB=A6=AC=EB=9B=B0=EA=B8=B0/?= =?UTF-8?q?twalla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../twalla26/Solution.java" | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 "src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla26/Solution.java" diff --git "a/src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla26/Solution.java" "b/src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla26/Solution.java" new file mode 100644 index 0000000..4acb392 --- /dev/null +++ "b/src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla26/Solution.java" @@ -0,0 +1,45 @@ +// ✏️ 프로그래머스 멀리 뛰기 + +// 📶 문제 난이도 +// Level 2 + +// 🔗 문제 링크 +// https://school.programmers.co.kr/learn/courses/30/lessons/12914 + +// ⏱️ 풀이 시간 +// 10분 + +// ✅ 풀이 근거 +// 피보나치로 간단하게 해결 + +import java.util.*; + +class Solution { + + long[] cache; + int mod = 1_234_567; + + long fibo(int n) { + + if (cache[n] != -1) { + return cache[n]; + } + + if (n == 1) { + return cache[1] = 1; + } else if (n == 2) { + return cache[2] = 2; + } + + return cache[n] = (fibo(n - 2) + fibo(n - 1)) % mod; + } + + public long solution(int n) { + + cache = new long[n + 1]; + Arrays.fill(cache, -1); + + long answer = fibo(n); + return answer; + } +} \ No newline at end of file From a37ae3bc1fd85d6f4e9a894e71058b792b2d5c5c Mon Sep 17 00:00:00 2001 From: twalla26 Date: Thu, 9 Jul 2026 15:01:40 +0900 Subject: [PATCH 2/7] =?UTF-8?q?week2/=EC=84=AC=EC=97=B0=EA=B2=B0=ED=95=98?= =?UTF-8?q?=EA=B8=B0/twalla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../twalla/Solution.java" | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 "src/week2/\354\204\254\354\227\260\352\262\260\355\225\230\352\270\260/twalla/Solution.java" diff --git "a/src/week2/\354\204\254\354\227\260\352\262\260\355\225\230\352\270\260/twalla/Solution.java" "b/src/week2/\354\204\254\354\227\260\352\262\260\355\225\230\352\270\260/twalla/Solution.java" new file mode 100644 index 0000000..e950474 --- /dev/null +++ "b/src/week2/\354\204\254\354\227\260\352\262\260\355\225\230\352\270\260/twalla/Solution.java" @@ -0,0 +1,87 @@ +// ✏️ 프로그래머스 섬 연결하기 + +// 📶 문제 난이도 +// Level 3 + +// 🔗 문제 링크 +// https://school.programmers.co.kr/learn/courses/30/lessons/42861 + +// ⏱️ 풀이 시간 +// 20분 + +// ✅ 풀이 근거 +// 모든 노드를 연결하는 최소 비용! 크루스칼로 해결! + +import java.util.*; + +class Solution { + + int N, M; + int[] parent; + + void union(int u, int v) { + + int fu = find(u); + int fv = find(v); + + if (fu != fv) { + parent[fv] = fu; + } + } + + int find(int u) { + if (parent[u] == u) { + return u; + } + + return parent[u] = find(parent[u]); + } + + public int solution(int n, int[][] costs) { + + N = n; + M = costs.length; + + parent = new int[N]; + for (int i = 0; i < N; i++) { + parent[i] = i; + } + + PriorityQueue pq = new PriorityQueue<>(); + + for (int i = 0; i < M; i++) { + pq.add(new Node(costs[i][0], costs[i][1], costs[i][2])); + } + + int answer = 0; + while (!pq.isEmpty()) { + + Node cur = pq.poll(); + + if (find(cur.u) == find(cur.v)) { + continue; + } + + union(cur.u, cur.v); + answer += cur.cost; + } + return answer; + } +} + +class Node implements Comparable { + int u; + int v; + int cost; + + public Node(int u, int v, int cost) { + this.u = u; + this.v = v; + this.cost = cost; + } + + @Override + public int compareTo(Node o) { + return this.cost - o.cost; + } +} \ No newline at end of file From 6e38425fde13c8537438a1ad0d48b0e731d71b05 Mon Sep 17 00:00:00 2001 From: twalla26 Date: Tue, 14 Jul 2026 20:02:28 +0900 Subject: [PATCH 3/7] =?UTF-8?q?week2/=EA=B4=84=ED=98=B8=ED=9A=8C=EC=A0=84?= =?UTF-8?q?=ED=95=98=EA=B8=B0/twalla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../twalla/Solution.java" | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 "src/week2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260/twalla/Solution.java" diff --git "a/src/week2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260/twalla/Solution.java" "b/src/week2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260/twalla/Solution.java" new file mode 100644 index 0000000..5bee989 --- /dev/null +++ "b/src/week2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260/twalla/Solution.java" @@ -0,0 +1,63 @@ +import java.util.*; + +class Solution { + + int N; + + boolean check(String s) { + + Stack stack = new Stack<>(); + + for (int i = 0; i < N; i++) { + + char cur = s.charAt(i); + + if (stack.isEmpty() || cur == '[' || cur == '{' || cur == '(') { + stack.push(cur); + continue; + } + + if (cur == ']') { + if (stack.peek() == '[') { + stack.pop(); + } else { + return false; + } + } else if (cur == '}') { + if (stack.peek() == '{') { + stack.pop(); + } else { + return false; + } + } else if (cur == ')') { + if (stack.peek() == '(') { + stack.pop(); + } else { + return false; + } + } + } + + if (!stack.isEmpty()) { + return false; + } + + return true; + } + + public int solution(String s) { + + N = s.length(); + + int cnt = 0; + for (int i = 0; i < N; i++) { + String moved = s.substring(i, N) + s.substring(0, i); + + if (check(moved)) { + cnt += 1; + } + } + + return cnt; + } +} \ No newline at end of file From e44d55d1517f1ee1b7bd2a3f0f3ea00de4f41655 Mon Sep 17 00:00:00 2001 From: twalla26 Date: Thu, 16 Jul 2026 12:29:50 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=EA=B4=84=ED=98=B8=ED=9A=8C=EC=A0=84?= =?UTF-8?q?=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../twalla/Solution.java" | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git "a/src/week2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260/twalla/Solution.java" "b/src/week2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260/twalla/Solution.java" index 5bee989..3492f91 100644 --- "a/src/week2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260/twalla/Solution.java" +++ "b/src/week2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260/twalla/Solution.java" @@ -1,3 +1,17 @@ +// ✏️ 프로그래머스 괄호 회전하기 + +// 📶 문제 난이도 +// Level 2 + +// 🔗 문제 링크 +// https://school.programmers.co.kr/learn/courses/30/lessons/76502 + +// ⏱️ 풀이 시간 +// 10분 + +// ✅ 풀이 근거 +// 문자열 회전 + stack으로 해결 + import java.util.*; class Solution { From ab6416ce410c8ba6560fc6518951214517c5c7c0 Mon Sep 17 00:00:00 2001 From: twalla26 Date: Thu, 16 Jul 2026 12:30:14 +0900 Subject: [PATCH 5/7] =?UTF-8?q?week2/=EA=B8=B0=EC=A7=80=EA=B5=AD=EC=84=A4?= =?UTF-8?q?=EC=B9=98/twalla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../twalla/Solution.java" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "src/week2/\352\270\260\354\247\200\352\265\255\354\204\244\354\271\230/twalla/Solution.java" diff --git "a/src/week2/\352\270\260\354\247\200\352\265\255\354\204\244\354\271\230/twalla/Solution.java" "b/src/week2/\352\270\260\354\247\200\352\265\255\354\204\244\354\271\230/twalla/Solution.java" new file mode 100644 index 0000000..af7d649 --- /dev/null +++ "b/src/week2/\352\270\260\354\247\200\352\265\255\354\204\244\354\271\230/twalla/Solution.java" @@ -0,0 +1,40 @@ +// ✏️ 프로그래머스 괄호 회전하기 + +// 📶 문제 난이도 +// Level 3 + +// 🔗 문제 링크 +// https://school.programmers.co.kr/learn/courses/30/lessons/12979 + +// ⏱️ 풀이 시간 +// 30분 + +// ✅ 풀이 근거 +// 아파트 개수가 최대 20억이기에 O(N)으로는 불가능 +// + +class Solution { + public int solution(int n, int[] stations, int w) { + + int start = 1, current = 1, total = 0, coverage = 2 * w + 1; + for (int i = 0; i < stations.length; i++) { + + int station = stations[i]; + start = station - w; + + if (start > current) { + int gap = start - current; + total += (gap - 1) / coverage + 1; + } + + current = Math.max(current, station + w + 1); + } + + if (current < n + 1) { + int gap = n + 1 - current; + total += (gap - 1) / coverage + 1; + } + + return total; + } +} \ No newline at end of file From 5e285d44c0e1c2907701478482499918ccc89835 Mon Sep 17 00:00:00 2001 From: twalla26 Date: Sat, 18 Jul 2026 23:55:52 +0900 Subject: [PATCH 6/7] =?UTF-8?q?week2/=ED=8A=9C=ED=94=8C/twalla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../twalla/Solution.java" | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 "src/week2/\355\212\234\355\224\214/twalla/Solution.java" diff --git "a/src/week2/\355\212\234\355\224\214/twalla/Solution.java" "b/src/week2/\355\212\234\355\224\214/twalla/Solution.java" new file mode 100644 index 0000000..1e9ec75 --- /dev/null +++ "b/src/week2/\355\212\234\355\224\214/twalla/Solution.java" @@ -0,0 +1,71 @@ +// ✏️ 프로그래머스 섬 연결하기 + +// 📶 문제 난이도 +// Level 2 + +// 🔗 문제 링크 +// https://school.programmers.co.kr/learn/courses/30/lessons/64065 + +// ⏱️ 풀이 시간 +// 30분 + +// ✅ 풀이 근거 +// 문자열 파싱이 굉장히 귀찮았던 문제 + +package week2.튜플.twalla; + +import java.util.*; + +public class Solution { + public int[] solution(String s) { + + PriorityQueue> tuples = new PriorityQueue<>((o1, o2) -> { + return o1.size() - o2.size(); + }); + + int start = 1; + int cnt = 0; + while (start < s.length() - 1) { + + if (s.charAt(start) != '{') { + start += 1; + continue; + } + + int end = start; + while (s.charAt(end) != '}') { + end += 1; + } + + String[] scope = s.substring(start + 1, end).split(","); + + List tuple = new ArrayList<>(); + for (String elem : scope) { + tuple.add(Integer.parseInt(elem)); + } + + tuples.add(tuple); + cnt += 1; + + start = end; + } + + Set set = new HashSet<>(); + int[] answer = new int[cnt]; + + for (int i = 0; i < cnt; i++) { + List tuple = tuples.poll(); + for (int j = 0; j < tuple.size(); j++) { + int elem = tuple.get(j); + if (set.contains(elem)) { + continue; + } + answer[i] = elem; + set.add(elem); + break; + } + } + + return answer; + } +} From 93d5cc6f827798a0268eee912b4d0d0d7ea8f62a Mon Sep 17 00:00:00 2001 From: twalla26 Date: Sat, 18 Jul 2026 23:56:20 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=ED=8F=B4=EB=8D=94=EB=AA=85=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../twalla/Solution.java" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla26/Solution.java" => "src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla/Solution.java" (100%) diff --git "a/src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla26/Solution.java" "b/src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla/Solution.java" similarity index 100% rename from "src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla26/Solution.java" rename to "src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/twalla/Solution.java"