diff --git a/3sum/pmjuu.py b/3sum/lylaminju.py
similarity index 100%
rename from 3sum/pmjuu.py
rename to 3sum/lylaminju.py
diff --git a/best-time-to-buy-and-sell-stock/pmjuu.py b/best-time-to-buy-and-sell-stock/lylaminju.py
similarity index 100%
rename from best-time-to-buy-and-sell-stock/pmjuu.py
rename to best-time-to-buy-and-sell-stock/lylaminju.py
diff --git a/binary-tree-level-order-traversal/pmjuu.py b/binary-tree-level-order-traversal/lylaminju.py
similarity index 100%
rename from binary-tree-level-order-traversal/pmjuu.py
rename to binary-tree-level-order-traversal/lylaminju.py
diff --git a/climbing-stairs/pmjuu.py b/climbing-stairs/lylaminju.py
similarity index 100%
rename from climbing-stairs/pmjuu.py
rename to climbing-stairs/lylaminju.py
diff --git a/clone-graph/pmjuu.py b/clone-graph/lylaminju.py
similarity index 100%
rename from clone-graph/pmjuu.py
rename to clone-graph/lylaminju.py
diff --git a/coin-change/pmjuu.py b/coin-change/lylaminju.py
similarity index 100%
rename from coin-change/pmjuu.py
rename to coin-change/lylaminju.py
diff --git a/combination-sum/pmjuu.py b/combination-sum/lylaminju.py
similarity index 100%
rename from combination-sum/pmjuu.py
rename to combination-sum/lylaminju.py
diff --git a/construct-binary-tree-from-preorder-and-inorder-traversal/pmjuu.py b/construct-binary-tree-from-preorder-and-inorder-traversal/lylaminju.py
similarity index 100%
rename from construct-binary-tree-from-preorder-and-inorder-traversal/pmjuu.py
rename to construct-binary-tree-from-preorder-and-inorder-traversal/lylaminju.py
diff --git a/container-with-most-water/pmjuu.py b/container-with-most-water/lylaminju.py
similarity index 100%
rename from container-with-most-water/pmjuu.py
rename to container-with-most-water/lylaminju.py
diff --git a/contains-duplicate/pmjuu.py b/contains-duplicate/lylaminju.py
similarity index 100%
rename from contains-duplicate/pmjuu.py
rename to contains-duplicate/lylaminju.py
diff --git a/counting-bits/pmjuu.py b/counting-bits/lylaminju.py
similarity index 100%
rename from counting-bits/pmjuu.py
rename to counting-bits/lylaminju.py
diff --git a/course-schedule/pmjuu.py b/course-schedule/lylaminju.py
similarity index 100%
rename from course-schedule/pmjuu.py
rename to course-schedule/lylaminju.py
diff --git a/decode-ways/pmjuu.py b/decode-ways/lylaminju.py
similarity index 100%
rename from decode-ways/pmjuu.py
rename to decode-ways/lylaminju.py
diff --git a/design-add-and-search-words-data-structure/pmjuu.py b/design-add-and-search-words-data-structure/lylaminju.py
similarity index 100%
rename from design-add-and-search-words-data-structure/pmjuu.py
rename to design-add-and-search-words-data-structure/lylaminju.py
diff --git a/encode-and-decode-strings/pmjuu.py b/encode-and-decode-strings/lylaminju.py
similarity index 100%
rename from encode-and-decode-strings/pmjuu.py
rename to encode-and-decode-strings/lylaminju.py
diff --git a/find-minimum-in-rotated-sorted-array/pmjuu.py b/find-minimum-in-rotated-sorted-array/lylaminju.py
similarity index 100%
rename from find-minimum-in-rotated-sorted-array/pmjuu.py
rename to find-minimum-in-rotated-sorted-array/lylaminju.py
diff --git a/graph-valid-tree/pmjuu.py b/graph-valid-tree/lylaminju.py
similarity index 100%
rename from graph-valid-tree/pmjuu.py
rename to graph-valid-tree/lylaminju.py
diff --git a/group-anagrams/pmjuu.py b/group-anagrams/lylaminju.py
similarity index 100%
rename from group-anagrams/pmjuu.py
rename to group-anagrams/lylaminju.py
diff --git a/house-robber-ii/pmjuu.py b/house-robber-ii/lylaminju.py
similarity index 100%
rename from house-robber-ii/pmjuu.py
rename to house-robber-ii/lylaminju.py
diff --git a/house-robber/pmjuu.py b/house-robber/lylaminju.py
similarity index 100%
rename from house-robber/pmjuu.py
rename to house-robber/lylaminju.py
diff --git a/implement-trie-prefix-tree/pmjuu.py b/implement-trie-prefix-tree/lylaminju.py
similarity index 100%
rename from implement-trie-prefix-tree/pmjuu.py
rename to implement-trie-prefix-tree/lylaminju.py
diff --git a/insert-interval/pmjuu.py b/insert-interval/lylaminju.py
similarity index 100%
rename from insert-interval/pmjuu.py
rename to insert-interval/lylaminju.py
diff --git a/invert-binary-tree/pmjuu.py b/invert-binary-tree/lylaminju.py
similarity index 100%
rename from invert-binary-tree/pmjuu.py
rename to invert-binary-tree/lylaminju.py
diff --git a/jump-game/pmjuu.py b/jump-game/lylaminju.py
similarity index 100%
rename from jump-game/pmjuu.py
rename to jump-game/lylaminju.py
diff --git a/kth-smallest-element-in-a-bst/pmjuu.py b/kth-smallest-element-in-a-bst/lylaminju.py
similarity index 100%
rename from kth-smallest-element-in-a-bst/pmjuu.py
rename to kth-smallest-element-in-a-bst/lylaminju.py
diff --git a/linked-list-cycle/pmjuu.py b/linked-list-cycle/lylaminju.py
similarity index 100%
rename from linked-list-cycle/pmjuu.py
rename to linked-list-cycle/lylaminju.py
diff --git a/longest-common-subsequence/pmjuu.py b/longest-common-subsequence/lylaminju.py
similarity index 100%
rename from longest-common-subsequence/pmjuu.py
rename to longest-common-subsequence/lylaminju.py
diff --git a/longest-consecutive-sequence/pmjuu.py b/longest-consecutive-sequence/lylaminju.py
similarity index 100%
rename from longest-consecutive-sequence/pmjuu.py
rename to longest-consecutive-sequence/lylaminju.py
diff --git a/longest-increasing-subsequence/pmjuu.py b/longest-increasing-subsequence/lylaminju.py
similarity index 100%
rename from longest-increasing-subsequence/pmjuu.py
rename to longest-increasing-subsequence/lylaminju.py
diff --git a/longest-palindromic-substring/lylaminju.py b/longest-palindromic-substring/lylaminju.py
new file mode 100644
index 000000000..c77763235
--- /dev/null
+++ b/longest-palindromic-substring/lylaminju.py
@@ -0,0 +1,31 @@
+'''
+시간 복잡도: O(n^2)
+공간 복잡도: O(1)
+'''
+
+class Solution:
+    def longestPalindrome(self, s: str) -> str:
+        start, max_length = 0, 1  # Track longest palindrome
+
+        def expand_around_center(left: int, right: int) -> int:
+            while left >= 0 and right < len(s) and s[left] == s[right]:
+                left -= 1
+                right += 1
+            # Return length of palindrome
+            return right - left - 1
+        
+        # Check each position as potential center
+        for i in range(len(s)):
+            # Check for odd length palindromes (single character center)
+            len1 = expand_around_center(i, i)
+            # Check for even length palindromes (between two characters)
+            len2 = expand_around_center(i, i + 1)
+            
+            curr_max = max(len1, len2)
+            
+            # Update start and max_length if current palindrome is longer
+            if curr_max > max_length:
+                max_length = curr_max
+                start = i - (curr_max - 1) // 2
+        
+        return s[start:start + max_length]
diff --git a/longest-repeating-character-replacement/pmjuu.py b/longest-repeating-character-replacement/lylaminju.py
similarity index 100%
rename from longest-repeating-character-replacement/pmjuu.py
rename to longest-repeating-character-replacement/lylaminju.py
diff --git a/longest-substring-without-repeating-characters/pmjuu.py b/longest-substring-without-repeating-characters/lylaminju.py
similarity index 100%
rename from longest-substring-without-repeating-characters/pmjuu.py
rename to longest-substring-without-repeating-characters/lylaminju.py
diff --git a/lowest-common-ancestor-of-a-binary-search-tree/pmjuu.py b/lowest-common-ancestor-of-a-binary-search-tree/lylaminju.py
similarity index 100%
rename from lowest-common-ancestor-of-a-binary-search-tree/pmjuu.py
rename to lowest-common-ancestor-of-a-binary-search-tree/lylaminju.py
diff --git a/maximum-depth-of-binary-tree/pmjuu.py b/maximum-depth-of-binary-tree/lylaminju.py
similarity index 100%
rename from maximum-depth-of-binary-tree/pmjuu.py
rename to maximum-depth-of-binary-tree/lylaminju.py
diff --git a/maximum-product-subarray/pmjuu.py b/maximum-product-subarray/lylaminju.py
similarity index 100%
rename from maximum-product-subarray/pmjuu.py
rename to maximum-product-subarray/lylaminju.py
diff --git a/maximum-subarray/pmjuu.py b/maximum-subarray/lylaminju.py
similarity index 100%
rename from maximum-subarray/pmjuu.py
rename to maximum-subarray/lylaminju.py
diff --git a/meeting-rooms-ii/pmjuu.py b/meeting-rooms-ii/lylaminju.py
similarity index 100%
rename from meeting-rooms-ii/pmjuu.py
rename to meeting-rooms-ii/lylaminju.py
diff --git a/meeting-rooms/pmjuu.py b/meeting-rooms/lylaminju.py
similarity index 100%
rename from meeting-rooms/pmjuu.py
rename to meeting-rooms/lylaminju.py
diff --git a/merge-intervals/pmjuu.py b/merge-intervals/lylaminju.py
similarity index 100%
rename from merge-intervals/pmjuu.py
rename to merge-intervals/lylaminju.py
diff --git a/merge-two-sorted-lists/pmjuu.py b/merge-two-sorted-lists/lylaminju.py
similarity index 100%
rename from merge-two-sorted-lists/pmjuu.py
rename to merge-two-sorted-lists/lylaminju.py
diff --git a/missing-number/pmjuu.py b/missing-number/lylaminju.py
similarity index 100%
rename from missing-number/pmjuu.py
rename to missing-number/lylaminju.py
diff --git a/non-overlapping-intervals/pmjuu.py b/non-overlapping-intervals/lylaminju.py
similarity index 100%
rename from non-overlapping-intervals/pmjuu.py
rename to non-overlapping-intervals/lylaminju.py
diff --git a/number-of-1-bits/pmjuu.py b/number-of-1-bits/lylaminju.py
similarity index 100%
rename from number-of-1-bits/pmjuu.py
rename to number-of-1-bits/lylaminju.py
diff --git a/number-of-connected-components-in-an-undirected-graph/pmjuu.py b/number-of-connected-components-in-an-undirected-graph/lylaminju.py
similarity index 100%
rename from number-of-connected-components-in-an-undirected-graph/pmjuu.py
rename to number-of-connected-components-in-an-undirected-graph/lylaminju.py
diff --git a/number-of-islands/pmjuu.py b/number-of-islands/lylaminju.py
similarity index 100%
rename from number-of-islands/pmjuu.py
rename to number-of-islands/lylaminju.py
diff --git a/pacific-atlantic-water-flow/pmjuu.py b/pacific-atlantic-water-flow/lylaminju.py
similarity index 100%
rename from pacific-atlantic-water-flow/pmjuu.py
rename to pacific-atlantic-water-flow/lylaminju.py
diff --git a/palindromic-substrings/pmjuu.py b/palindromic-substrings/lylaminju.py
similarity index 100%
rename from palindromic-substrings/pmjuu.py
rename to palindromic-substrings/lylaminju.py
diff --git a/product-of-array-except-self/pmjuu.py b/product-of-array-except-self/lylaminju.py
similarity index 100%
rename from product-of-array-except-self/pmjuu.py
rename to product-of-array-except-self/lylaminju.py
diff --git a/remove-nth-node-from-end-of-list/pmjuu.py b/remove-nth-node-from-end-of-list/lylaminju.py
similarity index 100%
rename from remove-nth-node-from-end-of-list/pmjuu.py
rename to remove-nth-node-from-end-of-list/lylaminju.py
diff --git a/reorder-list/pmjuu.py b/reorder-list/lylaminju.py
similarity index 100%
rename from reorder-list/pmjuu.py
rename to reorder-list/lylaminju.py
diff --git a/reverse-bits/pmjuu.py b/reverse-bits/lylaminju.py
similarity index 100%
rename from reverse-bits/pmjuu.py
rename to reverse-bits/lylaminju.py
diff --git a/reverse-linked-list/pmjuu.py b/reverse-linked-list/lylaminju.py
similarity index 100%
rename from reverse-linked-list/pmjuu.py
rename to reverse-linked-list/lylaminju.py
diff --git a/rotate-image/lylaminju.py b/rotate-image/lylaminju.py
new file mode 100644
index 000000000..1b01dc356
--- /dev/null
+++ b/rotate-image/lylaminju.py
@@ -0,0 +1,32 @@
+'''
+시간 복잡도: O(n^2)
+공간 복잡도: O(1)
+'''
+from typing import List
+
+
+class Solution:
+    def rotate(self, matrix: List[List[int]]) -> None:
+        n = len(matrix)
+
+        for i in range(n // 2):
+            k = (n - 1) - i * 2
+
+            for j in range(k):
+                end = i + k
+
+                matrix[i][i + j], matrix[i + j][end], matrix[end][end - j], matrix[end - j][i] = matrix[end - j][i], matrix[i][i + j], matrix[i + j][end], matrix[end][end - j]
+
+
+class Solution:
+    def rotate(self, matrix: List[List[int]]) -> None:
+        n = len(matrix)
+        
+        # Step 1: Transpose matrix (swap elements across diagonal)
+        for i in range(n):
+            for j in range(i, n):
+                matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
+        
+        # Step 2: Reverse each row
+        for i in range(n):
+            matrix[i].reverse()
diff --git a/same-tree/pmjuu.py b/same-tree/lylaminju.py
similarity index 100%
rename from same-tree/pmjuu.py
rename to same-tree/lylaminju.py
diff --git a/search-in-rotated-sorted-array/pmjuu.py b/search-in-rotated-sorted-array/lylaminju.py
similarity index 100%
rename from search-in-rotated-sorted-array/pmjuu.py
rename to search-in-rotated-sorted-array/lylaminju.py
diff --git a/set-matrix-zeroes/pmjuu.py b/set-matrix-zeroes/lylaminju.py
similarity index 100%
rename from set-matrix-zeroes/pmjuu.py
rename to set-matrix-zeroes/lylaminju.py
diff --git a/spiral-matrix/pmjuu.py b/spiral-matrix/lylaminju.py
similarity index 100%
rename from spiral-matrix/pmjuu.py
rename to spiral-matrix/lylaminju.py
diff --git a/subtree-of-another-tree/lylaminju.py b/subtree-of-another-tree/lylaminju.py
new file mode 100644
index 000000000..0ed52e970
--- /dev/null
+++ b/subtree-of-another-tree/lylaminju.py
@@ -0,0 +1,33 @@
+'''
+시간 복잡도: O(m * n)
+- m은 root 트리의 노드 수, n은 subRoot 트리의 노드 수
+
+공간 복잡도: O(h)
+- h는 root 트리의 높이
+'''
+class TreeNode:
+    def __init__(self, val=0, left=None, right=None):
+        self.val = val
+        self.left = left
+        self.right = right
+from typing import Optional
+
+
+class Solution:
+    def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool:
+        if not subRoot:
+            return True
+
+        if not root:
+            return False
+
+        return self.isSameTree(root, subRoot) or self.isSubtree(root.left, subRoot) or self.isSubtree(root.right, subRoot)
+    
+    def isSameTree(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> bool:
+        if not root1 and not root2:
+            return True
+
+        if not root1 or not root2:
+            return False
+
+        return root1.val == root2.val and self.isSameTree(root1.left, root2.left) and self.isSameTree(root1.right, root2.right)
diff --git a/sum-of-two-integers/pmjuu.py b/sum-of-two-integers/lylaminju.py
similarity index 100%
rename from sum-of-two-integers/pmjuu.py
rename to sum-of-two-integers/lylaminju.py
diff --git a/top-k-frequent-elements/pmjuu.py b/top-k-frequent-elements/lylaminju.py
similarity index 100%
rename from top-k-frequent-elements/pmjuu.py
rename to top-k-frequent-elements/lylaminju.py
diff --git a/two-sum/pmjuu.py b/two-sum/lylaminju.py
similarity index 100%
rename from two-sum/pmjuu.py
rename to two-sum/lylaminju.py
diff --git a/unique-paths/pmjuu.py b/unique-paths/lylaminju.py
similarity index 100%
rename from unique-paths/pmjuu.py
rename to unique-paths/lylaminju.py
diff --git a/valid-anagram/pmjuu.py b/valid-anagram/lylaminju.py
similarity index 100%
rename from valid-anagram/pmjuu.py
rename to valid-anagram/lylaminju.py
diff --git a/valid-palindrome/pmjuu.py b/valid-palindrome/lylaminju.py
similarity index 100%
rename from valid-palindrome/pmjuu.py
rename to valid-palindrome/lylaminju.py
diff --git a/valid-parentheses/pmjuu.py b/valid-parentheses/lylaminju.py
similarity index 100%
rename from valid-parentheses/pmjuu.py
rename to valid-parentheses/lylaminju.py
diff --git a/validate-binary-search-tree/lylaminju.py b/validate-binary-search-tree/lylaminju.py
new file mode 100644
index 000000000..0972f5367
--- /dev/null
+++ b/validate-binary-search-tree/lylaminju.py
@@ -0,0 +1,31 @@
+'''
+시간 복잡도: O(n)
+- n은 트리의 노드 수
+
+공간 복잡도: O(h)
+- h는 트리의 높이
+'''
+from typing import Optional
+
+# Definition for a binary tree node.
+class TreeNode:
+    def __init__(self, val=0, left=None, right=None):
+        self.val = val
+        self.left = left
+        self.right = right
+        
+class Solution:
+    def isValidBST(self, root: Optional[TreeNode]) -> bool:
+        def validate(node, min_val, max_val):
+            if not node:
+                return True
+            
+            # 현재 노드 값이 허용 범위를 벗어나면 False
+            if node.val <= min_val or node.val >= max_val:
+                return False
+            
+            # 왼쪽 서브트리는 현재 값보다 작아야 하고, 오른쪽 서브트리는 현재 값보다 커야 함
+            return validate(node.left, min_val, node.val) and validate(node.right, node.val, max_val)
+        
+        # 초기 범위는 전체 정수 범위로 설정
+        return validate(root, float('-inf'), float('inf'))
diff --git a/word-break/pmjuu.py b/word-break/lylaminju.py
similarity index 100%
rename from word-break/pmjuu.py
rename to word-break/lylaminju.py
diff --git a/word-search-ii/pmjuu.py b/word-search-ii/lylaminju.py
similarity index 100%
rename from word-search-ii/pmjuu.py
rename to word-search-ii/lylaminju.py
diff --git a/word-search/pmjuu.py b/word-search/lylaminju.py
similarity index 100%
rename from word-search/pmjuu.py
rename to word-search/lylaminju.py