From 688583368b163ce93aed9274357001f4b25b3a40 Mon Sep 17 00:00:00 2001 From: jsson Date: Tue, 21 Jul 2026 17:56:20 +0900 Subject: [PATCH 1/3] [WEEK 05] best time to buy and sell stock --- best-time-to-buy-and-sell-stock/essaysir.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 best-time-to-buy-and-sell-stock/essaysir.java diff --git a/best-time-to-buy-and-sell-stock/essaysir.java b/best-time-to-buy-and-sell-stock/essaysir.java new file mode 100644 index 0000000000..a3467acb98 --- /dev/null +++ b/best-time-to-buy-and-sell-stock/essaysir.java @@ -0,0 +1,17 @@ +class Solution { + public int maxProfit(int[] prices) { + int result = 0; + // prices = [7,1,5,3,6,4] + int lt = 0; + for ( int i = 1 ; i < prices.length; i ++){ + if ( prices[i] < prices[lt] ){ + lt = i; + } + else{ + result = Math.max(result, prices[i] - prices[lt]); + } + } + + return result; + } +} From caac2451452b3761bf7d3b28fc80ead95e8a4086 Mon Sep 17 00:00:00 2001 From: jsson Date: Wed, 22 Jul 2026 16:24:37 +0900 Subject: [PATCH 2/3] [WEEK 05] group anagrams --- group-anagrams/essaysir.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 group-anagrams/essaysir.java diff --git a/group-anagrams/essaysir.java b/group-anagrams/essaysir.java new file mode 100644 index 0000000000..de712b6f0b --- /dev/null +++ b/group-anagrams/essaysir.java @@ -0,0 +1,23 @@ +class Solution { + public List> groupAnagrams(String[] strs) { + // 아나그램을 그룹별로 만들어라 + // 아나그램 -> 각 string 을 배치해서 만들 수 있는 가 ? + // 각 알파벳이 몇개가 있는 가 ? + List> answer = new ArrayList<>(); + Map> map = new HashMap<>(); + + for ( int i = 0; i < strs.length; i ++) { + char[] chars = strs[i].toCharArray(); + Arrays.sort(chars); + + String s = new String(chars); + map.computeIfAbsent(s, k -> new ArrayList<>()).add(strs[i]); + } + + for (List group : map.values()) { + answer.add(group); + } + + return answer; + } +} From 2788e0c6e49439d2511f3c76b973cf8e2e613b9c Mon Sep 17 00:00:00 2001 From: jsson Date: Fri, 24 Jul 2026 16:44:11 +0900 Subject: [PATCH 3/3] [WEEK 05] encode and decode strings --- encode-and-decode-strings/essaysir.java | 38 +++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 encode-and-decode-strings/essaysir.java diff --git a/encode-and-decode-strings/essaysir.java b/encode-and-decode-strings/essaysir.java new file mode 100644 index 0000000000..30f5339993 --- /dev/null +++ b/encode-and-decode-strings/essaysir.java @@ -0,0 +1,38 @@ +public class Solution { + /* + * @param strs: a list of strings + * @return: encodes a list of strings to a single string. + */ + public String encode(List strs) { + StringBuilder sb = new StringBuilder(); + for (String s : strs) { + sb.append(s.length()); + sb.append('#'); + sb.append(s); + } + return sb.toString(); + } + + /* + * @param str: A string + * @return: decodes a single string to a list of strings + */ + public List decode(String str) { + List res = new ArrayList<>(); + int i = 0; + while (i < str.length()) { + // '#' 앞의 숫자를 길이로 파싱 + int len = 0; + while (str.charAt(i) != '#') { + len = len * 10 + (str.charAt(i) - '0'); + i++; + } + i++; // '#' 건너뛰기 + + // 정확히 len 글자만 잘라내기 + res.add(str.substring(i, i + len)); + i += len; + } + return res; + } +}