한 번만 등장한 문자

nacSeo (낙서)·2024년 5월 6일
0

프로그래머스

목록 보기
159/169

문제 설명

문자열 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인 경우에만 문자열에 저장하여 리턴시켜주면서 해결! 이중반복문을 통해 중복 횟수를 기록해주는 방법을 떠올리는 게 핵심이었다.

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글