[알고리즘문제풀기] 한 번만 등장한 문자

silver's avatar
Dec 22, 2025
[알고리즘문제풀기] 한 번만 등장한 문자

문제

내가 작성한 정답

import java.util.Arrays; import java.util.stream.*; class Solution { public String solution(String s) { String answer = ""; int[] arr = new int[26]; for(char c:s.toCharArray()){ arr[(char)(c-'a')]++; } return IntStream.range(0,26) .filter(i->arr[i]==1) .mapToObj(i->""+(char)(i+'a')) .sorted() .collect((Collectors.joining())); } } import java.util.Arrays; class Solution { public String solution(String s) { StringBuilder sb = new StringBuilder(); for (char c : s.toCharArray()) { if (s.indexOf(c) == s.lastIndexOf(c)) { sb.append(c); } } char[] arr = sb.toString().toCharArray(); Arrays.sort(arr); return new String(arr); } }

다른 사람들의 정답

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("")) // 1. 문자열을 문자 단위로 배열로 쪼갬 ["a","b","c","a","b","c","a","d","c"] .collect(Collectors.groupingBy(s1 -> s1)) // 2. 각 문자를 키로, 등장한 모든 위치를 값으로 그룹핑 // 결과: {a=[a,a,a], b=[b,b], c=[c,c,c], d=[d]} .entrySet() // 3. Map을 Entry 스트림으로 변환 [(a,[a,a,a]), (b,[b,b]), ...] .stream() // 4. 다시 스트림으로 변환 .filter(entry -> entry.getValue().size() <= 1) // 5. 값(List)의 크기가 1인 것만 필터 (한 번만 등장) // d=[d] → size=1 ✓ 통과, 나머지들은 size>1 ✗ 제외 .map(Map.Entry::getKey) // 6. Entry에서 키(문자열)만 추출 ["d"] .sorted() // 7. 사전순 정렬 (여러 개면 자동 정렬) .collect(Collectors.joining()); // 8. 문자열로 합침 "d" } } import java.util.*; class Solution { public String solution(String s) { char[] chars = s.toCharArray(); Map<Character, Integer> charMap = new HashMap(); for(char c : chars){ charMap.put(c, charMap.getOrDefault(c, 0) +1); } StringBuilder sb = new StringBuilder(); for(char c : charMap.keySet()){ if( charMap.get(c) == 1){ sb.append(c); } } char[] charArr = sb.toString().toCharArray(); Arrays.sort(charArr); return new String(charArr); } }
Share article

silver