문자열 s
에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution
을 완성해주세요.
s
는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
str
은 길이 1 이상
인 문자열입니다.
s | return |
---|---|
"Zbcdefg" | "gfedcbZ" |
char
는 문자 각각이 아스키코드값을 가지고 있다. 따라서 아스키 코드 값을 이용해 정렬을 해주면 된다.
우선 주어진 문자열인 s
를 char
로 변환해 배열에 값을 하나씩 넣어주기 위해 toCharArray()
를 사용한다.
처음에는 중첩 for
문을 이용해 아스키코드값을 정렬해주었는데,
후에는 그냥 Arrays.sort()
를 사용해도 아스키코드값으로 인식하니 상관없다는 것을 깨달아버렸다.
마지막으로는 char
인 alphabet
을 String.valueOf()
로 문자열로 변환한 뒤 리턴했다. 이유는 리턴 타입이 String
으로 되어있기 때문이다.
후에는 StringBuilder
의 문자열을 거꾸로 해주는 reverse()
메서드를 이용하였다.
// 혼자 처음 짠 코드
class Solution {
public String solution(String s) {
char[] alphabet = s.toCharArray();
for (int i = 0; i < alphabet.length; i++) {
for (int j = 1; j < alphabet.length-i; j++) {
if ( alphabet[j-1] < alphabet[j] ) {
char tmp = alphabet[j-1];
alphabet[j-1] = alphabet[j];
alphabet[j] = tmp;
}
}
}
return String.valueOf(alphabet);
}
}
// 다른 분들의 코드를 본 뒤 짠 코드
import java.util.Arrays;
class Solution {
public String solution(String s) {
char[] alphabet = s.toCharArray();
Arrays.sort(alphabet);
return new StringBuilder(new String(alphabet)).reverse().toString();
}
}