Group Anagrams
Given an array of strings strs
, group the anagrams together. You can return the answer in any order.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Example 1 : Input : strs = ["eat","tea","tan","ate","nat","bat"] Output : [["bat"],["nat","tan"],["ate","eat","tea"]]
Example 2 : Input : strs = [""] Output : [[""]]
Example 3 : Input : strs = ["a"] Output : [["a"]]
์๊ณ ๋ฆฌ์ฆ 1. ์๋ฃ๊ตฌ์กฐ ๋ง๋ ๋ค. - Ma๊ณผ ์ ๋ตList<List<String>> 2. Input String์ char[ ] ๋ฐฐ์ด๋ก ๋ฐ๊พผ๋ค. - String.toCharArray() ์ด์ฉ ์ด๋ฅผ ์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌํ๋ค. - Arrays.sort()์ด์ฉ.(์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌ) 3. 2๋ฅผ ๋ค์ String์ผ๋ก ๋ฐ๊พธ๊ณ , ์ด๊ฒ์ map์ key๊ฐ ๋๋ค! - String.valueOf()์ด์ฉ 4. Map์ ๋ฃ๋๋ค! Map(key,value) = Map(String, List<String>). key๋ ์ผ์ข ์ index, value๋ ์ผ์ข ์ ๋ฐ์ดํฐ๋ผ๊ณ ์๊ฐํ๋ฉด ํธํจ! 5. ์ ๋ต์ด ๋๋ List<List<String>>๋ฅผ ๋ฆฌํดํ๋ค.map์ ๋ชจ๋ value๋ฅผ ๋ด๋๋ค. - .addAll(map.values()) ์ด์ฉ
์๊ณ ๋ฆฌ์ฆ์ Java๋ก
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
//0.๊ธฐ์ ์ฌ๋ก ์ ์ธ
if (strs == null || strs.length == 0) return new ArrayList<List<String>>();
//1.๊ทธ๋ฆ ์์ฑ
List<List<String>> result = new ArrayList<>();
Map<String,List<String>> map = new HashMap<String,List<String>>();
for(String str : strs) {
//2-1.String์ char[]๋ก ๋ฐ๊พผ๋ค.
//2-2.Arrays.sort()๋ฅผ ์ด์ฉํ์ฌ 2-1์ ์ ๋ ฌํ๋ค!
char[] charArray = str.toCharArray();
Arrays.sort(charArray);
//3.์ ๋ ฌํ char ๋ฐฐ์ด์ ๊ฐ์ String์ด ๋๊ณ , ์ด๊ฒ์ map์ key๊ฐ ๋๋ค.
//3-1. char[]๋ฅผ ๋ค์ String์ผ๋ก ๋ฐ๊พผ๋ค.
//3-2. 3-1์ map์ key๋ก ๋ง๋ ๋ค(์ ์ฅํ๋ค).
String key = String.valueOf(charArray);
//4.Map(key,value) = Map(String,List<String>)
if(map.containsKey(key)) {//key๊ฐ์ผ๋ก aet๊ฐ ์กด์ฌํ๋ค๋ฉด!
map.get(key).add(str);
}else {//์ฒ์์ else๋ฌธ ์คํ!
List<String> list = new ArrayList<>();
list.add(str);
map.put(key,list);
}
}
result.addAll(map.values());
return result;
}
}
๋ฐฐ์ด ๋ด์ฉ ์ ๋ฆฌ 1. String.toCharArray() : String์ char[ ] ๋ฐฐ์ด๋ก ๋ฐ๊พผ๋ค.(๋น์ถ,์ค์!) 2. String.valueOf(parameter) : ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๊ฒ์ String์ผ๋ก ๋ฐ๊พผ. 3. Map.values() : Map์ ๋ชจ๋ values๋ฅผ ๊ฐ์ ธ์จ๋ค. 4. ArrayList.addAll() : ArrayList์ add() ๋ฉ์๋์ addAll() ๋ฉ์๋๋ ArrayList์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๊ฒ์ ๋ฐ์ดํฐ๋ก ์ถ๊ฐํ๋ค. addAll()์ ArrayList๋ฅผ ํต์งธ๋ก ์ถ๊ฐํ ๋ ์ฌ์ฉ๋๋ค.
result.addAll(map.values());
//map.values()๋ฅผ ํตํด map์ ๋ชจ๋ value๋ฅผ ๊ฐ์ ธ์ค๊ณ ,
//์ด ๋ map์ value๋ String ํ์
์ List์ด๊ณ , ์ด List๋ ArrayList๋ฅผ ํตํด ๋ง๋ค์ด์ง!
Last updated
Was this helpful?