[프로그래머스] 한 번만 등장한 문자

당당·2023년 4월 21일
0

프로그래머스

목록 보기
14/245

https://school.programmers.co.kr/learn/courses/30/lessons/120896

📔문제

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


🚫제한사항

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


📝입출력 예

sresult
"abcabcadc""d"
"abdc""abcd"
"hello""eho"

📝입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

입출력 예 #3

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


🧮알고리즘 분류

  • 문자열
  • 해시
  • 배열
  • 수학

📃소스 코드

import java.util.Arrays;

class Solution {
    public String solution(String s) {
        String answer = "";
        char[] array=s.toCharArray();
        int count=0;
        
        Arrays.sort(array);//a..z순으로 정렬
        
        s=String.valueOf(array);
        
        for(int i=0;i<s.length();i++){
            if(i==s.length()-1){
                if(count==0){
                    answer=answer+s.charAt(i);
                }
                else{
                    break;
                }
            }
            else if(s.charAt(i)==s.charAt(i+1)){//뒤랑 같으면
                count++;
            }
            else{//다르면
                if(count>0){//근데 이전까지 같은애가 있었다.
                    count=0;
                    continue;
                }
                else{//같은 애도 없었고, 혼자다
                    answer=answer+s.charAt(i);
                }
            }
        }
        
        
        return answer;
    }
}

📰출력 결과


📂고찰

먼저 s를 알파벳 작은순으로 정렬했다. 그리고, 만약 현재 알파벳이랑 뒤에랑 같으면 그대로 넘기고 다른데, 이전에 애들이랑 같았던 애여도 넘기고
둘다 아닌 경우일 때만 answer에 추가해주었다.

is.length()-1일 때 처리를 했었는데, count==0이랑 묶었다가 런타임 에러가 떴었다. 그래서 수정했다!

profile
MySQL DBA 신입 지원

0개의 댓글