문제 설명
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
제한사항
0 < s의 길이 < 1,000 s는 소문자로만 이루어져 있습니다.
나의 코드
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public String solution(String s) {
String answer = "";
List<String> list = new ArrayList<>();
for(int i=0; i<s.length(); i++) {
if(!list.contains(s.charAt(i))) {
list.add(String.valueOf(s.charAt(i)));
} else list.remove(String.valueOf(s.charAt(i)));
}
Collections.sort(list);
for(int i=0; i<list.size(); i++) {
answer+=list.get(i);
}
return answer;
}
}
같은 문자가 여러 번 등장할 때 로직이 잘못되었다.
import java.util.Arrays;
class Solution {
public String solution(String s) {
String answer = "";
char[] arr = s.toCharArray();
Arrays.sort(arr);
for(int i=0; i<arr.length; i++) {
int count = 0;
for(int j=0; j<arr.length; j++) {
if(arr[i]==arr[j]) {
count++;
}
}
if(count==1) {
answer += arr[i];
}
}
return answer;
}
}
느낀 점
주어진 문자열을 배열로 바꿔주어 먼저 정렬해준 뒤, 이중 반복문을 통하여 임의의 변수 count를 선언하여 중복 횟수를 기록해줬다. 처음 실행되는 반복문을 마친 후 중복값이 1인 경우에만 문자열에 저장하여 리턴시켜주면서 해결! 이중반복문을 통해 중복 횟수를 기록해주는 방법을 떠올리는 게 핵심이었다.