Skip to content

Commit 39aba0b

Browse files
committed
group anagrams
1 parent 60b4bfc commit 39aba0b

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

β€Žgroup-anagrams/eunhwa99.javaβ€Ž

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.HashMap;
4+
import java.util.List;
5+
import java.util.Map;
6+
7+
// 해결법
8+
// 1. λ°°μ—΄ μ•ˆμ˜ μ›”μ†Œλ“€μ„ μˆœνšŒν•œλ‹€.
9+
// 2. 각 μ›μ†Œμ— λŒ€ν•˜μ—¬ λ¬Έμžμ—΄μ„ μ •λ ¬ν•œ ν›„, hashmap에 λ„£λŠ”λ‹€. 이 λ•Œ hashMap μžλ£Œκ΅¬μ‘°λŠ” <String, List<String>> ν˜•νƒœλ‘œ λ§Œλ“ λ‹€.
10+
11+
// μ‹œκ°„ λ³΅μž‘λ„:
12+
// 1. 크기가 m인 λ¬Έμžμ—΄μ„ μ •λ ¬ν•  λ•Œ O(mlogm)이 μ†Œμš”
13+
// 2. λ°°μ—΄μ˜ 크기가 n μ΄λ―€λ‘œ μˆœνšŒν•˜λŠ”λ° O(n)
14+
// 3. hashmap μ‚½μž…μ€ O(1)
15+
// μœ„ 사싀듀을 μ‘°ν•©ν•˜λ©΄ 총 O(nmlogm)이 μ†Œμš”λœλ‹€.
16+
// 참고둜, 전체 λ°°μ—΄ ν¬κΈ°λŠ” μ΅œλŒ€ 10^4 이고, 각 λ¬Έμžμ—΄μ˜ κΈΈμ΄λŠ” μ΅œλŒ€ 100μ΄λ―€λ‘œ, μœ„μ™€ 같이 μ ‘κ·Όν•  경우, μ΅œλŒ€ 10^6의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°€μ§„λ‹€.
17+
18+
// 곡간 λ³΅μž‘λ„: hashmap 크기만큼 μ‚¬μš© -> O(nm)
19+
20+
class Solution{
21+
public List<List<String>> groupAnagrams(String[] strs) {
22+
Map<String, List<String>> map = new HashMap<>();
23+
for(String str: strs){
24+
char[] charArr = str.toCharArray();
25+
Arrays.sort(charArr);
26+
27+
map.computeIfAbsent(String.valueOf(charArr), key -> new ArrayList<>()).add(str);
28+
}
29+
return map.values().stream().toList();
30+
}
31+
}

0 commit comments

Comments
Β (0)