🫧 코테 : CodingTest

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

예옹이 2024. 3. 18. 17:20

 

문제

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

 

 

입출력 예

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

 

 


 

 

 

이번 문제는 한번만 나온 알파벳에 초점을 맞춰서 코드를 짰습니다.

 

1. 형변환

StringBuilder answer = new StringBuilder();
char[] sChar = s.toCharArray();

 

StringBuilder를 사용한 이유는 append라는 함수를 사용해주기 위해서입니다.

String 형태의 s를 charArray로 바꿔준 이유는 하나의 알파벳을 배열의 원소로 접근하기 위해서입니다.

 

 

 

2. sort()시키기

Arrays.sort(sChar);

 

sChar를 배열로 만들어줬으니 sort()함수도 사용할 수 있습니다.

 

 

 

3. 양 옆에 나랑 같은 알파벳이 있는지 확인

if((i == 0 || sChar[i] != sChar[i-1]) && (i == sChar.length-1 || sChar[i] != sChar[i+1]))

 

내 자리(sChar[i]) 왼쪽(sChar[i-1])이 나랑 다르고,

내 자리(sChar[i]) 오른쪽(sChar[i+1])도 나랑 달라야합니다.

 

단 인덱스 범위를 벗어나는 오류를 막기 위해

왼쪽을 비교할때는 i == 0 일 경우는 탐색하지 않고,

오른쪽을 비교할때는 i == 마지막 일 경우는 탐색하지 않습니다.

 

 

 

4. 없으면 append() 시키기

 

 


 

 

 

코드

import java.util.*;

class Solution {
    public String solution(String s) {
        StringBuilder answer = new StringBuilder();
        char[] sChar = s.toCharArray();
        Arrays.sort(sChar);
        
        for(int i=0; i<s.length();i++){
            if((i == 0 || sChar[i] != sChar[i-1]) && (i == sChar.length-1 || sChar[i] != sChar[i+1])){
                answer.append(sChar[i]);
            }
        }
        return answer.toString();
    }
}

 

 

 

 

 

제가 작성한 코드는 아래에서 확인하실 수 있습니다.

https://github.com/eonwy/programmers

 

GitHub - eonwy/programmers: 🔎 coding-test (programmers) 🔍

🔎 coding-test (programmers) 🔍. Contribute to eonwy/programmers development by creating an account on GitHub.

github.com