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

[코딩테스트 입문] 한 번만 등장한 문자

bameh 2023. 1. 30. 22:40

[문제 설명]

문자열 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 합니다.

입출력 예 #3

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

 

 

 

[문제 풀이]

1. 문자열을 배열로 만든 후 사전 순으로 정렬한다.

2. 문자 등장 횟수를 세는 cnt 배열을 생성한다.

3. for문을 이용하여 문자별 등장하는 횟수를 저장한다.

4. cnt의 값이 1일 때 answer에 저장한다.

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] str = new String[s.length()];
        int[] cnt = new int[str.length];
        
        // 문자열을 배열로 만든 후 사전 순으로 정렬한다.
        for(int i=0; i<str.length; i++) {
            str = s.split("");
        }
        Arrays.sort(str);
        
        for(int i=0; i<str.length; i++) {
            for(int j=0; j<str.length; j++) {
                if(str[i].equals(str[j])) {
                    cnt[i]++;
                }
            }
        }
        
        for(int i=0; i<str.length; i++) {
            if(cnt[i] == 1) answer += str[i];
        }        
        
        return answer;
    }
}

 

향상된 for문과 알파벳 26개를 이용하여 간편하게 출력하는 방법도 있다.