[프로그래머스] Java : 한 번만 등장한 문자
문제
문자열 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