Skip to content

Commit 193f10b

Browse files
authored
Merge pull request DaleStudy#454 from jaejeong1/main
[jaejeong1] week 5
2 parents 486d50b + 32085b5 commit 193f10b

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class SolutionJaeJeong {
2+
3+
public int maxProfit(int[] prices) {
4+
// 주어진 가격 배열이 주어지고 prices[i]는 i번째 날의 주어진 주식 가격
5+
// 한 주식을 매수할 단일 날짜를 선택하고, 매도할 미래의 다른 날짜를 선택해 수익을 극대화
6+
// 이 거래에서 얻을 수 있는 최대 수익을 반환해라, 수익을 얻을 수 없으면 0을 반환해라
7+
// 싸게 매수해서 비싸게 매도해라
8+
9+
// 3번째 풀이
10+
// 최대 이익: 현재 가격 - 이전 가격 중 최저 가격
11+
// 시간복잡도: O(N), 공간복잡도: O(1)
12+
int minPrice = prices[0];
13+
int maxProfit = 0;
14+
for (int i = 1; i < prices.length; i++) {
15+
if (prices[i - 1] < minPrice) {
16+
minPrice = prices[i - 1];
17+
}
18+
19+
var profit = prices[i] - minPrice;
20+
if (profit > maxProfit) {
21+
maxProfit = profit;
22+
}
23+
}
24+
25+
return maxProfit;
26+
}
27+
}

group-anagrams/jaejeong1.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import java.util.ArrayList;
2+
import java.util.HashMap;
3+
import java.util.List;
4+
import java.util.Map;
5+
6+
class SolutionGroupAnagram {
7+
public List<List<String>> groupAnagrams(String[] strs) {
8+
// char, integer map으로 strs의 원소들을 분류한다
9+
// 분류 후 알파벳 순으로 정렬해 알파벳 + 개수 조합의 str으로 만든다
10+
// str 과 인덱스를 맵에 넣는다
11+
// 맵 keyset을 돌면서 value에 해당하는 strs 인덱스로 접근해 정답으로 반환
12+
// 시간복잡도: O(N^2), 공간복잡도: O(N)
13+
Map<String, List<Integer>> map = new HashMap<>();
14+
15+
for (int i=0; i<strs.length; i++) {
16+
var anagramData = createAnagramData(strs[i]);
17+
var value = map.getOrDefault(anagramData, new ArrayList<>());
18+
value.add(i);
19+
map.put(anagramData, value);
20+
}
21+
22+
List<List<String>> answer = new ArrayList<>();
23+
24+
for (String key : map.keySet()) {
25+
List<String> value = new ArrayList<>();
26+
for (int index : map.get(key)) {
27+
value.add(strs[index]);
28+
}
29+
30+
answer.add(value);
31+
}
32+
33+
return answer;
34+
}
35+
36+
private String createAnagramData(String str) {
37+
Map<Character, Integer> map = new HashMap<>();
38+
39+
for (int i=0; i<str.length(); i++) {
40+
var element = str.charAt(i);
41+
map.put(element, map.getOrDefault(element, 0)+1);
42+
}
43+
44+
var keySet = map.keySet().stream().sorted().toList();
45+
StringBuilder anagramData = new StringBuilder();
46+
for (char key : keySet) {
47+
anagramData.append(key).append(map.get(key));
48+
}
49+
50+
return anagramData.toString();
51+
}
52+
}

0 commit comments

Comments
 (0)