Level. 0
문제
문자열 s가 매개변수로 주어집니다.
s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.
한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
* 제한사항
- 0 < s의 길이 < 1,000
- s는 소문자로만 이루어져 있습니다.
풀이
import java.util.Map;
import java.util.TreeMap; // Key를 기준으로 자동정렬
class Solution {
public String solution(String s) {
String answer = "";
Map<Character,Integer> m = new TreeMap<>();
for(int i=0 ; i< s.length(); i++){
m.put(s.charAt(i),m.getOrDefault(s.charAt(i),0)+1);
}
for (Character key : m.keySet()) {
if(m.get(key)==1) answer += key;
}
return answer;
}
}
다른 풀이
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
class Solution {
public String solution(String s) {
return Arrays.stream(s.split(""))
.collect(Collectors.groupingBy(s1 -> s1))
.entrySet()
.stream()
.filter(entry -> entry.getValue().size() <= 1)
.map(Map.Entry::getKey)
.sorted()
.collect(Collectors.joining());
}
}
collect()
- Stream의 데이터를 변형 등의 처리를 하고 원하는 자료형으로 변환해준다.
Collectors.groupingBy()
- groupingBy를 이용하면 데이터 집합을 하나 이상의 특성으로 분류, 그룹화하는 연산을 쉽게 수행할 수 있다.
- groupingBy는 특정 속성값에 의해서 그룹핑을 짓는 것이며, 결과값으로 항상 Map<K, V>을 반환한다.
https://school.programmers.co.kr/learn/courses/30/lessons/120896
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] OX퀴즈 (0) | 2023.10.10 |
---|---|
[프로그래머스(Java)] 코드 처리하기 (0) | 2023.10.10 |
[프로그래머스(Java)] 배열 만들기 2 / Integer.toBinaryString (0) | 2023.10.09 |
[프로그래머스(Java)] 특이한 정렬 / sort, Integer.compare(), compareTo() (0) | 2023.10.08 |
[프로그래머스(Java)] 전국 대회 선발 고사 / PriorityQueue, Stream ( range, filter, box, sorted, reduce, get) (0) | 2023.10.08 |