diff --git a/best-time-to-buy-and-sell-stock/jaejeong1.java b/best-time-to-buy-and-sell-stock/jaejeong1.java new file mode 100644 index 00000000..3c21afd7 --- /dev/null +++ b/best-time-to-buy-and-sell-stock/jaejeong1.java @@ -0,0 +1,27 @@ +class SolutionJaeJeong { + + public int maxProfit(int[] prices) { + // 주어진 가격 배열이 주어지고 prices[i]는 i번째 날의 주어진 주식 가격 + // 한 주식을 매수할 단일 날짜를 선택하고, 매도할 미래의 다른 날짜를 선택해 수익을 극대화 + // 이 거래에서 얻을 수 있는 최대 수익을 반환해라, 수익을 얻을 수 없으면 0을 반환해라 + // 싸게 매수해서 비싸게 매도해라 + + // 3번째 풀이 + // 최대 이익: 현재 가격 - 이전 가격 중 최저 가격 + // 시간복잡도: O(N), 공간복잡도: O(1) + int minPrice = prices[0]; + int maxProfit = 0; + for (int i = 1; i < prices.length; i++) { + if (prices[i - 1] < minPrice) { + minPrice = prices[i - 1]; + } + + var profit = prices[i] - minPrice; + if (profit > maxProfit) { + maxProfit = profit; + } + } + + return maxProfit; + } +} diff --git a/group-anagrams/jaejeong1.java b/group-anagrams/jaejeong1.java new file mode 100644 index 00000000..a3cf9b37 --- /dev/null +++ b/group-anagrams/jaejeong1.java @@ -0,0 +1,52 @@ +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +class SolutionGroupAnagram { + public List> groupAnagrams(String[] strs) { + // char, integer map으로 strs의 원소들을 분류한다 + // 분류 후 알파벳 순으로 정렬해 알파벳 + 개수 조합의 str으로 만든다 + // str 과 인덱스를 맵에 넣는다 + // 맵 keyset을 돌면서 value에 해당하는 strs 인덱스로 접근해 정답으로 반환 + // 시간복잡도: O(N^2), 공간복잡도: O(N) + Map> map = new HashMap<>(); + + for (int i=0; i()); + value.add(i); + map.put(anagramData, value); + } + + List> answer = new ArrayList<>(); + + for (String key : map.keySet()) { + List value = new ArrayList<>(); + for (int index : map.get(key)) { + value.add(strs[index]); + } + + answer.add(value); + } + + return answer; + } + + private String createAnagramData(String str) { + Map map = new HashMap<>(); + + for (int i=0; i