From 66df292e1c96dd5485a253251182b9f70014de47 Mon Sep 17 00:00:00 2001 From: danny Date: Thu, 23 Jul 2026 13:03:12 +0900 Subject: [PATCH 1/5] 0121-best-time-to-buy-and-sell-stock --- .../dahyeong-yun.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 best-time-to-buy-and-sell-stock/dahyeong-yun.java diff --git a/best-time-to-buy-and-sell-stock/dahyeong-yun.java b/best-time-to-buy-and-sell-stock/dahyeong-yun.java new file mode 100644 index 0000000000..23b009e146 --- /dev/null +++ b/best-time-to-buy-and-sell-stock/dahyeong-yun.java @@ -0,0 +1,18 @@ +/** + * TC : O(n) + * - 가격 배열 n-1 만큼 순회하므로 O(n) + * SC : O(1) + * - 상수 개의 변수만 사용하므로 O(1) + */ +class Solution { + public int maxProfit(int[] prices) { + int maxProfit = 0; // 안사는 것이 최선인 경우 + int minPrice = prices[0]; // 첫번째 가격으로 사는 경우 + + for(int i=1; i Date: Thu, 23 Jul 2026 13:09:15 +0900 Subject: [PATCH 2/5] add newline --- best-time-to-buy-and-sell-stock/dahyeong-yun.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/best-time-to-buy-and-sell-stock/dahyeong-yun.java b/best-time-to-buy-and-sell-stock/dahyeong-yun.java index 23b009e146..837eedb0a4 100644 --- a/best-time-to-buy-and-sell-stock/dahyeong-yun.java +++ b/best-time-to-buy-and-sell-stock/dahyeong-yun.java @@ -15,4 +15,4 @@ public int maxProfit(int[] prices) { } return maxProfit; } -} \ No newline at end of file +} From 21654f121a141075b5667e1af780a2a50f746bd5 Mon Sep 17 00:00:00 2001 From: danny Date: Thu, 23 Jul 2026 17:47:26 +0900 Subject: [PATCH 3/5] 0049-group-anagrams --- group-anagrams/dahyeong-yun.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 group-anagrams/dahyeong-yun.java diff --git a/group-anagrams/dahyeong-yun.java b/group-anagrams/dahyeong-yun.java new file mode 100644 index 0000000000..3761aa4df0 --- /dev/null +++ b/group-anagrams/dahyeong-yun.java @@ -0,0 +1,24 @@ +/** + * input str의 길이가 n이고, 각 str 문자열의 길이를 m라 할 때 + * + * TC : O(n * m log n) + * - n 번 순회할 때마다 각 단어 정렬에 m log m 만큼 소요되므로 O(n * m log m) + * SC : O(n * m) + * - n * m 만큼의 char 배열 공간을 key 값 생성으로 사용 + * - 정답 Map 에서 입력 크기 n만큼의 공간 을 사용 + * - 따라서 (n * m) + n 즉 O(n * m) 만큼의 공간 사용 + */ +class Solution { + public List> groupAnagrams(String[] strs) { + Map> answer = new HashMap<>(); + + for(String str : strs) { + char[] c = str.toCharArray(); + Arrays.sort(c); + String key = String.valueOf(c); + answer.computeIfAbsent(key, k -> new ArrayList<>()).add(str); + } + + return new ArrayList<>(answer.values()); + } +} From aeda377991161d897ae00b519c467703a30c2075 Mon Sep 17 00:00:00 2001 From: danny Date: Fri, 24 Jul 2026 20:29:21 +0900 Subject: [PATCH 4/5] 0139-word-break --- word-break/dahyeong-yun.java | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 word-break/dahyeong-yun.java diff --git a/word-break/dahyeong-yun.java b/word-break/dahyeong-yun.java new file mode 100644 index 0000000000..249510d435 --- /dev/null +++ b/word-break/dahyeong-yun.java @@ -0,0 +1,39 @@ +/** + * n: 문자열 s의 길이, m: wordDict 단어 수, k: 단어의 평균 길이 + * - TC: O(n * m * k) -> n개 인덱스 방문 × m개 단어 순회 × k 길이 문자열 비교 + * - SC: O(n) -> 메모이제이션 배열 및 재귀 스택 깊이 O(n) + */ +class Solution { + String s; + int len = 0; + boolean[] imposible; + List wordDict; + + public boolean wordBreak(String s, List wordDict) { + this.s = s; + this.len = s.length(); + this.imposible = new boolean[len]; + this.wordDict = wordDict; + return dfs(0); + } + + public boolean dfs(int index) { + if(index == len) { + return true; + } + + if(imposible[index]) return false; + + for(String word : wordDict) { + int wordLength = word.length(); + if(s.startsWith(word, index)) { + if(len >= index + wordLength) { + if(dfs(index + wordLength)) return true; + } + } + } + + imposible[index] = true; + return false; + } +} From ae5f590980c66ab4c2c81f87274eb8d4a3f626a9 Mon Sep 17 00:00:00 2001 From: danny Date: Fri, 24 Jul 2026 20:30:35 +0900 Subject: [PATCH 5/5] fix typo --- group-anagrams/dahyeong-yun.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/group-anagrams/dahyeong-yun.java b/group-anagrams/dahyeong-yun.java index 3761aa4df0..c60d3d0e16 100644 --- a/group-anagrams/dahyeong-yun.java +++ b/group-anagrams/dahyeong-yun.java @@ -1,7 +1,7 @@ /** * input str의 길이가 n이고, 각 str 문자열의 길이를 m라 할 때 * - * TC : O(n * m log n) + * TC : O(n * m log m) * - n 번 순회할 때마다 각 단어 정렬에 m log m 만큼 소요되므로 O(n * m log m) * SC : O(n * m) * - n * m 만큼의 char 배열 공간을 key 값 생성으로 사용