From 3b4521d1abb688d18f4fe2c7eb88b50d48491c4a Mon Sep 17 00:00:00 2001 From: sangbeenmoon Date: Sat, 15 Aug 2026 21:51:43 +0900 Subject: [PATCH 1/3] week8. --- clone-graph/sangbeenmoon.java | 59 +++++++++++++++++++ longest-common-subsequence/sangbeenmoon.java | 35 +++++++++++ .../sangbeenmoon.java | 46 +++++++++++++++ palindromic-substrings/sangbeenmoon.py | 40 +++++++++++++ 4 files changed, 180 insertions(+) create mode 100644 clone-graph/sangbeenmoon.java create mode 100644 longest-common-subsequence/sangbeenmoon.java create mode 100644 longest-repeating-character-replacement/sangbeenmoon.java create mode 100644 palindromic-substrings/sangbeenmoon.py diff --git a/clone-graph/sangbeenmoon.java b/clone-graph/sangbeenmoon.java new file mode 100644 index 0000000000..625e822186 --- /dev/null +++ b/clone-graph/sangbeenmoon.java @@ -0,0 +1,59 @@ + +// Definition for a Node. + +import java.util.ArrayList; +import java.util.Map; + +/* +class Node { + public int val; + public List neighbors; + public Node() { + val = 0; + neighbors = new ArrayList(); + } + public Node(int _val) { + val = _val; + neighbors = new ArrayList(); + } + public Node(int _val, ArrayList _neighbors) { + val = _val; + neighbors = _neighbors; + } +} +*/ + +class Solution { + + // <원본, 복제본> + public Map map = new HashMap<>(); + + public Node cloneGraph(Node node) { + + if (node == null) { + return null; + } + + return dfs(node); + } + + public Node dfs(Node origin) { + if (map.containsKey(origin)) { + return map.get(origin); + } + + if (origin == null) { + return null; + } + + Node copied = new Node(origin.val); + map.put(origin, copied); + + for (Node n : origin.neighbors) { + Node neighbor = dfs(n); + copied.neighbors.add(neighbor); + } + + return copied; + } +} diff --git a/longest-common-subsequence/sangbeenmoon.java b/longest-common-subsequence/sangbeenmoon.java new file mode 100644 index 0000000000..3d5c647909 --- /dev/null +++ b/longest-common-subsequence/sangbeenmoon.java @@ -0,0 +1,35 @@ +class Solution { + public int longestCommonSubsequence(String text1, String text2) { + + int dp[][] = new int[text1.length()][text2.length()]; + + + for(int i = 0; i < text1.length(); i++){ + if (text1.substring(0,i + 1).contains(String.valueOf(text2.charAt(0)))) { + dp[i][0] = 1; + } + } + + for(int i = 0; i < text2.length(); i++){ + if (text2.substring(0,i + 1).contains(String.valueOf(text1.charAt(0)))) { + dp[0][i] = 1; + } + } + + for(int i = 1; i < text1.length(); i++){ + for(int j = 1; j< text2.length(); j++){ + if(text1.charAt(i) == text2.charAt(j)){ + dp[i][j] = dp[i-1][j-1] + 1; + } else { + dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]); + } + System.out.println(dp[i][j]); + } + System.out.println(); + } + + return dp[text1.length() - 1][text2.length() - 1]; + + + } +} diff --git a/longest-repeating-character-replacement/sangbeenmoon.java b/longest-repeating-character-replacement/sangbeenmoon.java new file mode 100644 index 0000000000..2c0f3db525 --- /dev/null +++ b/longest-repeating-character-replacement/sangbeenmoon.java @@ -0,0 +1,46 @@ +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +class Solution { + + Map counterMap = new HashMap<>(); + + public int characterReplacement(String s, int k) { + + int left = 0; + int answer = 0; + + for (int right = 0; right < s.length(); right++){ + if(counterMap.containsKey(s.charAt(right))){ + + int cnt = counterMap.get(s.charAt(right)); + counterMap.put(s.charAt(right), cnt + 1); + } + else { + counterMap.put(s.charAt(right), 1); + } + + while (!isCounterOK(k)) { + char l = s.charAt(left); + int cnt = counterMap.get(l); + if (cnt == 1) counterMap.remove(l); + else counterMap.put(l, cnt - 1); + left++; + } + answer = Math.max(answer, right - left + 1); + } + + return answer; + } + + public boolean isCounterOK(int k) { + int maxCount = 0; + int totalCount = 0; + for (Entry entry : counterMap.entrySet()) { + maxCount = Math.max(maxCount, entry.getValue()); + totalCount = totalCount + entry.getValue(); + } + return totalCount - maxCount <= k; + } +} diff --git a/palindromic-substrings/sangbeenmoon.py b/palindromic-substrings/sangbeenmoon.py new file mode 100644 index 0000000000..da9e92fc14 --- /dev/null +++ b/palindromic-substrings/sangbeenmoon.py @@ -0,0 +1,40 @@ +class Solution: + def countSubstrings(self, s: str) -> int: + # abcba + + dp = [[0] * (len(s) + 1) for _ in range(len(s) + 1)] + + def isPalindrome(start, end) -> bool: + + if end - start == 0: + return True + + if end - start == 1 : + return s[start] == s[end] + + if dp[start][end] == 1: + return True + + if dp[start][end] == -1: + return False + + # memo[(start+1 , end-1)] = isPalindrome(start+1, end-1) +# 0,2 -> 1,1 + if s[start] == s[end]: + return isPalindrome(start+1, end-1) + + return False + + answer = 0 + + for i in range(len(s) - 1, -1, -1): + for j in range(i,len(s)): + if isPalindrome(i,j): + dp[i][j] = 1 + answer += 1 + else: + dp[i][j] = -1 + + return answer + + From 0bde6c8794b551273fa472d690c7515d99c20681 Mon Sep 17 00:00:00 2001 From: sangbeenmoon Date: Sat, 15 Aug 2026 21:52:59 +0900 Subject: [PATCH 2/3] chore: remove comments. --- palindromic-substrings/sangbeenmoon.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/palindromic-substrings/sangbeenmoon.py b/palindromic-substrings/sangbeenmoon.py index da9e92fc14..2b8109c1ee 100644 --- a/palindromic-substrings/sangbeenmoon.py +++ b/palindromic-substrings/sangbeenmoon.py @@ -1,7 +1,5 @@ class Solution: def countSubstrings(self, s: str) -> int: - # abcba - dp = [[0] * (len(s) + 1) for _ in range(len(s) + 1)] def isPalindrome(start, end) -> bool: @@ -18,8 +16,6 @@ def isPalindrome(start, end) -> bool: if dp[start][end] == -1: return False - # memo[(start+1 , end-1)] = isPalindrome(start+1, end-1) -# 0,2 -> 1,1 if s[start] == s[end]: return isPalindrome(start+1, end-1) From 1940a588692cb4614a2238f631fa857376cdf31c Mon Sep 17 00:00:00 2001 From: sangbeenmoon Date: Sat, 15 Aug 2026 21:55:43 +0900 Subject: [PATCH 3/3] chore: remove comments --- longest-common-subsequence/sangbeenmoon.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/longest-common-subsequence/sangbeenmoon.java b/longest-common-subsequence/sangbeenmoon.java index 3d5c647909..468052ffe8 100644 --- a/longest-common-subsequence/sangbeenmoon.java +++ b/longest-common-subsequence/sangbeenmoon.java @@ -23,9 +23,7 @@ public int longestCommonSubsequence(String text1, String text2) { } else { dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]); } - System.out.println(dp[i][j]); } - System.out.println(); } return dp[text1.length() - 1][text2.length() - 1];