본문 바로가기

코딩테스트/프로그래머스

[프로그래머스][JAVA] 한 번만 등장한 문자 (LV.0)

728x90
반응형

 문제 설명

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

 

 제한사항

• 0 < s의 길이 < 1,000
• s는 소문자로만 이루어져 있습니다.

 

 입출력 예

s result
"abcabcadc" "d"
"abdc" "abcd"
"hello" "eho"

 

※ 입출력 예 설명

입출력 예 #1

     • "abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.

입출력 예 #2

     • "abdc"에서 모든 문자가 한 번씩 등장하므로 사전 순으로 정렬한 "abcd"를 return 합니다.

입출력 예 #2

     • "hello"에서 한 번씩 등장한 문자는 "heo"이고 이를 사전 순으로 정렬한 "eho"를 return 합니다.

 


나의 풀이
import java.util.Arrays;

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] result = new String[s.length()];
        
        
        for(int i=0; i<result.length; i++) {
            result[i] = s.substring(i, i+1);
        }
        
        Arrays.sort(result);
        
        for(int i=0; i<result.length; i++) {
            int idx = 0;
            for(int j=0; j<result.length; j++) {
                if(result[i].equals(result[j])) {
                    idx++;
                } 
            }
            if(idx <= 1) {
                answer += result[i];
            }
        }
        
        return answer;
    }
}

 

다른 사람의 풀이
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();
    }
}
728x90
반응형