Algorithm/Programmers
[Programmers] Lv.0 / 한 번만 등장한 문자 / Java
unknownomad
2024. 6. 20. 07:20
문제
풀이
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public String solution(String s) {
return s.chars() // 문자열 -> 스트림으로 변환(각 문자 정수값으로 매핑)
.mapToObj(c -> (char) c) // 각 정수값 -> 문자로 변환
/*
* collect()로 스트림 그룹화
* groupingBy()로 문자 그룹화
* counting()으로 각 그룹 요소 수 세어 맵에 저장
* LinkedHashMap: 입력 순서 유지
*/
.collect(Collectors.groupingBy(c -> c, LinkedHashMap::new, Collectors.counting()))
.entrySet().stream() // 맵의 엔트리 -> 스트림으로 변환
.filter(e -> e.getValue() == 1L) // 등장 횟수가 1인 문자 필터링
.map(e -> String.valueOf(e.getKey())) // 각 문자 -> 문자열로 변환
.sorted() // 알파벳순 정렬
.collect(Collectors.joining()); // 정렬된 문자들을 하나의 문자열로 결합
}
}
class Solution {
public String solution(String s) {
int[] alpha = new int[26];
for(char c : s.toCharArray()){
alpha[c - 'a']++;
}
StringBuilder answer = new StringBuilder();
for(int i = 0; i < 26; i++){
if(alpha[i] == 1){
answer.append((char)(i + 'a'));
}
}
return answer.toString();
}
}
출처
https://school.programmers.co.kr/learn/courses/30/lessons/120896