From 6eff0a3e470603940c9fee7cd5d9e3fe738cc423 Mon Sep 17 00:00:00 2001 From: "hyungmin.oh" Date: Mon, 28 Apr 2025 20:18:03 +0900 Subject: [PATCH 1/5] initial commit for week05 --- .../haung921209.md | 36 +++++++++++++++++++ encode-and-decode-strings/haung921209.md | 36 +++++++++++++++++++ group-anagrams/haung921209.md | 36 +++++++++++++++++++ implement-trie-prefix-tree/haung921209.md | 36 +++++++++++++++++++ word-break/haung921209.md | 36 +++++++++++++++++++ 5 files changed, 180 insertions(+) create mode 100644 best-time-to-buy-and-sell-stock/haung921209.md create mode 100644 encode-and-decode-strings/haung921209.md create mode 100644 group-anagrams/haung921209.md create mode 100644 implement-trie-prefix-tree/haung921209.md create mode 100644 word-break/haung921209.md diff --git a/best-time-to-buy-and-sell-stock/haung921209.md b/best-time-to-buy-and-sell-stock/haung921209.md new file mode 100644 index 000000000..f0136efdc --- /dev/null +++ b/best-time-to-buy-and-sell-stock/haung921209.md @@ -0,0 +1,36 @@ +# 연관 링크 +- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5) +- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) + +# Problem +- 문제 링크 : +- 문제 이름 : +- 문제 번호 : +- 난이도 : +- 카테고리 : + +# 문제 설명 + + +# 아이디어 +- 어떤 방법으로 접근했는지 서술 +- 포스 vs 최적화 아이디어 차이 등 +- 잡도에 대한 고려 + +# ✅ 코드 (Solution) + +# 🔍 코드 설명 + + +# 최적화 포인트 (Optimality Discussion) +• 최적화한 이유와 원리 +• 더 줄일 수 있는 여지는 있는가? +• 기존 방법 대비 얼마나 효율적이었는지 + +# 🧪 테스트 & 엣지 케이스 + +# 📚 관련 지식 복습 + +# 🔁 회고 + + diff --git a/encode-and-decode-strings/haung921209.md b/encode-and-decode-strings/haung921209.md new file mode 100644 index 000000000..f0136efdc --- /dev/null +++ b/encode-and-decode-strings/haung921209.md @@ -0,0 +1,36 @@ +# 연관 링크 +- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5) +- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) + +# Problem +- 문제 링크 : +- 문제 이름 : +- 문제 번호 : +- 난이도 : +- 카테고리 : + +# 문제 설명 + + +# 아이디어 +- 어떤 방법으로 접근했는지 서술 +- 포스 vs 최적화 아이디어 차이 등 +- 잡도에 대한 고려 + +# ✅ 코드 (Solution) + +# 🔍 코드 설명 + + +# 최적화 포인트 (Optimality Discussion) +• 최적화한 이유와 원리 +• 더 줄일 수 있는 여지는 있는가? +• 기존 방법 대비 얼마나 효율적이었는지 + +# 🧪 테스트 & 엣지 케이스 + +# 📚 관련 지식 복습 + +# 🔁 회고 + + diff --git a/group-anagrams/haung921209.md b/group-anagrams/haung921209.md new file mode 100644 index 000000000..f0136efdc --- /dev/null +++ b/group-anagrams/haung921209.md @@ -0,0 +1,36 @@ +# 연관 링크 +- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5) +- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) + +# Problem +- 문제 링크 : +- 문제 이름 : +- 문제 번호 : +- 난이도 : +- 카테고리 : + +# 문제 설명 + + +# 아이디어 +- 어떤 방법으로 접근했는지 서술 +- 포스 vs 최적화 아이디어 차이 등 +- 잡도에 대한 고려 + +# ✅ 코드 (Solution) + +# 🔍 코드 설명 + + +# 최적화 포인트 (Optimality Discussion) +• 최적화한 이유와 원리 +• 더 줄일 수 있는 여지는 있는가? +• 기존 방법 대비 얼마나 효율적이었는지 + +# 🧪 테스트 & 엣지 케이스 + +# 📚 관련 지식 복습 + +# 🔁 회고 + + diff --git a/implement-trie-prefix-tree/haung921209.md b/implement-trie-prefix-tree/haung921209.md new file mode 100644 index 000000000..f0136efdc --- /dev/null +++ b/implement-trie-prefix-tree/haung921209.md @@ -0,0 +1,36 @@ +# 연관 링크 +- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5) +- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) + +# Problem +- 문제 링크 : +- 문제 이름 : +- 문제 번호 : +- 난이도 : +- 카테고리 : + +# 문제 설명 + + +# 아이디어 +- 어떤 방법으로 접근했는지 서술 +- 포스 vs 최적화 아이디어 차이 등 +- 잡도에 대한 고려 + +# ✅ 코드 (Solution) + +# 🔍 코드 설명 + + +# 최적화 포인트 (Optimality Discussion) +• 최적화한 이유와 원리 +• 더 줄일 수 있는 여지는 있는가? +• 기존 방법 대비 얼마나 효율적이었는지 + +# 🧪 테스트 & 엣지 케이스 + +# 📚 관련 지식 복습 + +# 🔁 회고 + + diff --git a/word-break/haung921209.md b/word-break/haung921209.md new file mode 100644 index 000000000..f0136efdc --- /dev/null +++ b/word-break/haung921209.md @@ -0,0 +1,36 @@ +# 연관 링크 +- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5) +- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) + +# Problem +- 문제 링크 : +- 문제 이름 : +- 문제 번호 : +- 난이도 : +- 카테고리 : + +# 문제 설명 + + +# 아이디어 +- 어떤 방법으로 접근했는지 서술 +- 포스 vs 최적화 아이디어 차이 등 +- 잡도에 대한 고려 + +# ✅ 코드 (Solution) + +# 🔍 코드 설명 + + +# 최적화 포인트 (Optimality Discussion) +• 최적화한 이유와 원리 +• 더 줄일 수 있는 여지는 있는가? +• 기존 방법 대비 얼마나 효율적이었는지 + +# 🧪 테스트 & 엣지 케이스 + +# 📚 관련 지식 복습 + +# 🔁 회고 + + From b4bd5b10ed1265bc2b38d52fd6ee569e4b629b24 Mon Sep 17 00:00:00 2001 From: "hyungmin.oh" Date: Mon, 28 Apr 2025 21:52:41 +0900 Subject: [PATCH 2/5] 121. Best Time to Buy and Sell Stock --- .../haung921209.md | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/best-time-to-buy-and-sell-stock/haung921209.md b/best-time-to-buy-and-sell-stock/haung921209.md index f0136efdc..ee99ca75f 100644 --- a/best-time-to-buy-and-sell-stock/haung921209.md +++ b/best-time-to-buy-and-sell-stock/haung921209.md @@ -3,10 +3,10 @@ - [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) # Problem -- 문제 링크 : -- 문제 이름 : -- 문제 번호 : -- 난이도 : +- 문제 링크 : https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ +- 문제 이름 : Best Time to Buy and Sell Stock +- 문제 번호 : 121 +- 난이도 : easy - 카테고리 : # 문제 설명 @@ -19,8 +19,25 @@ # ✅ 코드 (Solution) +```cpp +class Solution { +public: + int maxProfit(vector& prices) { + int localMax = prices[prices.size()-1]; + int res = 0; + for(int i=prices.size()-2;i>=0;i--){ + localMax = max(localMax, prices[i]); + res = max(res, localMax-prices[i]); + } + + return res; + } +}; +``` + # 🔍 코드 설명 +- local max를 설정 # 최적화 포인트 (Optimality Discussion) • 최적화한 이유와 원리 From 2f4cafa9a42c3792c521b3657b516791588535f2 Mon Sep 17 00:00:00 2001 From: "hyungmin.oh" Date: Mon, 28 Apr 2025 22:35:21 +0900 Subject: [PATCH 3/5] group-anagrams --- group-anagrams/haung921209.md | 48 ++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/group-anagrams/haung921209.md b/group-anagrams/haung921209.md index f0136efdc..07c268dbe 100644 --- a/group-anagrams/haung921209.md +++ b/group-anagrams/haung921209.md @@ -3,29 +3,53 @@ - [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) # Problem -- 문제 링크 : -- 문제 이름 : -- 문제 번호 : -- 난이도 : +- 문제 링크 : https://leetcode.com/problems/group-anagrams/description/ +- 문제 이름 : Group Anagrams +- 문제 번호 : 49 +- 난이도 : medium - 카테고리 : # 문제 설명 # 아이디어 -- 어떤 방법으로 접근했는지 서술 -- 포스 vs 최적화 아이디어 차이 등 -- 잡도에 대한 고려 +- string을 정렬 -> key로 사용 가능 + - 정렬을 이용해 서로 다른 permutation(anagram)들을 같은 그룹으로 묶음. +- unordered_map을 사용해서 key lookup이 평균적으로 **O(1)**에 가능하므로 전체 알고리즘은 매우 효율적임. # ✅ 코드 (Solution) - +``` +class Solution { +public: + vector> groupAnagrams(vector& strs) { + vector> res; + unordered_map> um; + for(auto str: strs){ + string key= str; + sort(key.begin(), key.end()); + um[key].push_back(str); + } + for(auto vec = um.begin();vec != um.end(); vec++){ + res.push_back(vec->second); + } + return res; + } +}; + +``` # 🔍 코드 설명 - +- length가 10^4 이하 + sort -> input 상 상수 시간 내 처리 가능 + - 정렬을 이용해 서로 다른 permutation(anagram)들을 같은 그룹으로 묶음. +- unordered_map을 사용해서 key lookup이 평균적으로 **O(1)**에 가능하므로 전체 알고리즘은 매우 효율적임. +- # 최적화 포인트 (Optimality Discussion) -• 최적화한 이유와 원리 -• 더 줄일 수 있는 여지는 있는가? -• 기존 방법 대비 얼마나 효율적이었는지 +- 불필요한 문자열 복사 방지: + - for(auto& str : strs) 처럼 auto 뒤에 &(레퍼런스) 를 사용하면, str을 복사하지 않고 참조로 받아 메모리 사용을 줄일 수 있음. +- key string 생성 비용 줄이기: + - 문자열을 매번 정렬하면 O(K log K) (K는 문자열 길이) 비용이 듦. + - 만약 모든 입력 문자열이 영어 소문자(a~z)로 제한된다면, 26개 알파벳의 빈도수 배열을 사용해서 O(K)로 key를 만들 수도 있음. + - 이 경우 정렬이 아니라 counting 기반 key 생성. # 🧪 테스트 & 엣지 케이스 From 1fd5d2aa763a5eca1b9a208e28a871e68334339f Mon Sep 17 00:00:00 2001 From: "hyungmin.oh" Date: Sat, 3 May 2025 22:44:31 +0900 Subject: [PATCH 4/5] commit --- encode-and-decode-strings/haung921209.md | 8 ++++---- implement-trie-prefix-tree/haung921209.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/encode-and-decode-strings/haung921209.md b/encode-and-decode-strings/haung921209.md index f0136efdc..310bdc86a 100644 --- a/encode-and-decode-strings/haung921209.md +++ b/encode-and-decode-strings/haung921209.md @@ -3,10 +3,10 @@ - [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) # Problem -- 문제 링크 : -- 문제 이름 : -- 문제 번호 : -- 난이도 : +- 문제 링크 : https://leetcode.com/problems/encode-and-decode-strings/description/ +- 문제 이름 : Encode and Decode Strings +- 문제 번호 : 271 +- 난이도 : medium - 카테고리 : # 문제 설명 diff --git a/implement-trie-prefix-tree/haung921209.md b/implement-trie-prefix-tree/haung921209.md index f0136efdc..b8f430bac 100644 --- a/implement-trie-prefix-tree/haung921209.md +++ b/implement-trie-prefix-tree/haung921209.md @@ -3,10 +3,10 @@ - [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) # Problem -- 문제 링크 : -- 문제 이름 : -- 문제 번호 : -- 난이도 : +- 문제 링크 : https://leetcode.com/problems/implement-trie-prefix-tree/description/ +- 문제 이름 : Implement Trie(Prefix Tree) +- 문제 번호 : 208 +- 난이도 : medium - 카테고리 : # 문제 설명 From 58f3ac6e1cd79a658925d921e10d895e7e8761b1 Mon Sep 17 00:00:00 2001 From: "hyungmin.oh" Date: Sat, 3 May 2025 22:45:14 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=EC=95=88=20=ED=91=BC=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- encode-and-decode-strings/haung921209.md | 36 ----------------------- implement-trie-prefix-tree/haung921209.md | 36 ----------------------- word-break/haung921209.md | 36 ----------------------- 3 files changed, 108 deletions(-) delete mode 100644 encode-and-decode-strings/haung921209.md delete mode 100644 implement-trie-prefix-tree/haung921209.md delete mode 100644 word-break/haung921209.md diff --git a/encode-and-decode-strings/haung921209.md b/encode-and-decode-strings/haung921209.md deleted file mode 100644 index 310bdc86a..000000000 --- a/encode-and-decode-strings/haung921209.md +++ /dev/null @@ -1,36 +0,0 @@ -# 연관 링크 -- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5) -- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) - -# Problem -- 문제 링크 : https://leetcode.com/problems/encode-and-decode-strings/description/ -- 문제 이름 : Encode and Decode Strings -- 문제 번호 : 271 -- 난이도 : medium -- 카테고리 : - -# 문제 설명 - - -# 아이디어 -- 어떤 방법으로 접근했는지 서술 -- 포스 vs 최적화 아이디어 차이 등 -- 잡도에 대한 고려 - -# ✅ 코드 (Solution) - -# 🔍 코드 설명 - - -# 최적화 포인트 (Optimality Discussion) -• 최적화한 이유와 원리 -• 더 줄일 수 있는 여지는 있는가? -• 기존 방법 대비 얼마나 효율적이었는지 - -# 🧪 테스트 & 엣지 케이스 - -# 📚 관련 지식 복습 - -# 🔁 회고 - - diff --git a/implement-trie-prefix-tree/haung921209.md b/implement-trie-prefix-tree/haung921209.md deleted file mode 100644 index b8f430bac..000000000 --- a/implement-trie-prefix-tree/haung921209.md +++ /dev/null @@ -1,36 +0,0 @@ -# 연관 링크 -- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5) -- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) - -# Problem -- 문제 링크 : https://leetcode.com/problems/implement-trie-prefix-tree/description/ -- 문제 이름 : Implement Trie(Prefix Tree) -- 문제 번호 : 208 -- 난이도 : medium -- 카테고리 : - -# 문제 설명 - - -# 아이디어 -- 어떤 방법으로 접근했는지 서술 -- 포스 vs 최적화 아이디어 차이 등 -- 잡도에 대한 고려 - -# ✅ 코드 (Solution) - -# 🔍 코드 설명 - - -# 최적화 포인트 (Optimality Discussion) -• 최적화한 이유와 원리 -• 더 줄일 수 있는 여지는 있는가? -• 기존 방법 대비 얼마나 효율적이었는지 - -# 🧪 테스트 & 엣지 케이스 - -# 📚 관련 지식 복습 - -# 🔁 회고 - - diff --git a/word-break/haung921209.md b/word-break/haung921209.md deleted file mode 100644 index f0136efdc..000000000 --- a/word-break/haung921209.md +++ /dev/null @@ -1,36 +0,0 @@ -# 연관 링크 -- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5) -- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C) - -# Problem -- 문제 링크 : -- 문제 이름 : -- 문제 번호 : -- 난이도 : -- 카테고리 : - -# 문제 설명 - - -# 아이디어 -- 어떤 방법으로 접근했는지 서술 -- 포스 vs 최적화 아이디어 차이 등 -- 잡도에 대한 고려 - -# ✅ 코드 (Solution) - -# 🔍 코드 설명 - - -# 최적화 포인트 (Optimality Discussion) -• 최적화한 이유와 원리 -• 더 줄일 수 있는 여지는 있는가? -• 기존 방법 대비 얼마나 효율적이었는지 - -# 🧪 테스트 & 엣지 케이스 - -# 📚 관련 지식 복습 - -# 🔁 회고 - -