04. 그룹 애너그램
📌문제
문자열 배열을 받아 애너그램 단위로 그룹핑하라
- 예제1
📝입력
`strs = ["eat","tea","tan","ate","nat","bat"]`
💻출력
`[["bat"],["nat","tan"],["ate","eat","tea"]]`
- 예제2
📝입력
`strs = [""]`
💻출력
`[[""]]`
📌풀이
1. Map을 활용한 방법 (7ms, 45.4mb)
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> map = new HashMap<>();
for(String s : strs){
char[] charArr = s.toCharArray();
Arrays.sort(charArr);
String key = String.valueOf(charArr);
// key 값이 있으면 있는 값을 반환, key 값이 없다면 입력된 값 넣어줌
map.putIfAbsent(key, new ArrayList<>());
map.get(key).add(s);
}
return new ArrayList<>(map.values());
}
- 문자열을 정렬한 key 값과 정렬 전, 원래의 문자열을 담을 애너그램 그룹핑될 String List를 생성
- 문자열 배열에서 가져온 값을 정렬 후, map에 넣어주는데 이때, key 값이 없으면 List를 새로 생성해서 넣어줌(이 작업이 없으면 최초에 list가 생성되지 않으니 error 발생)
'Algorithm > PTUStudy' 카테고리의 다른 글
2주차. 오븐시계 (0) | 2023.01.16 |
---|---|
2주차. 문자열 조작(가장 긴 팰린드롬 부분 문자열) (0) | 2023.01.16 |
2주차. 문자열 조작(가장 흔한 단어) (0) | 2023.01.16 |
1주차. 문자열 조작(로그파일 재정렬) (0) | 2023.01.16 |
1주차. 문자열 조작(문자열 뒤집기) (0) | 2023.01.16 |