문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
입력
"Zbcdefg"
출력
"gfedcbZ"
class Solution {
public String solution(String s) {
int [] asciiNum = new int [s.length()];
char [] chars = new char[s.length()];
for(int i = 0; i < s.length(); i++) {
asciiNum[i] = s.charAt(i);
chars[i] = s.charAt(i);
}
for(int j = 0; j < asciiNum.length; j++) {
for(int n = j + 1; n < asciiNum.length; n++) {
if(asciiNum[n] > asciiNum[j]) {
int temp = asciiNum[j];
asciiNum[j] = asciiNum[n];
asciiNum[n] = temp;
char temp2 = chars[j];
chars[j] = chars[n];
chars[n] = temp2;
}
}
}
StringBuilder answer = new StringBuilder();
for(int k = 0; k < chars.length; k++) {
answer.append(chars[k]);
}
return answer.toString();
}
}
예전에 내가 풀었던 풀이인데, 최근 연습을 많이 해서 다시 풀어보았다.
import java.util.*;
class Solution {
public String solution(String s) {
String [] sArray = s.split("");
Arrays.sort(sArray, Collections.reverseOrder());
return String.join("", sArray);
}
}
확실히 함수 응용력이 올라가고 연습을 많이 하니 더 쉽게 푸는 방법이 보였다.