문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
생각한 풀이
1. 내림차순 정렬을 통해 문자열을 나열해야겠다
2. 하지만 일반 정렬이 아닌 문자를 사전식 배열을 해야한다
3. 대문자는 소문자보다 작은 것으로 생각하자
4. 정렬을 할때 위의 규칙에 맞게 정렬하자
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
StringBuilder sb = new StringBuilder();
Character c[] = new Character[s.length()];
for(int i=0;i<s.length();i++){
c[i]=s.charAt(i);
}
Arrays.sort(c,(a,b)-> b-a);
for(char ch :c){
sb.append(ch);
}
return sb.toString();
}
}
🐴 풀이
1. 해당 문자열을 문자 하나씩 담을 배열을 생성
2. for문을 통해 s의 문자 c에 담기
3. Comparator를 이용해 사용자가 직접 정렬 방식 정의
4. 향상된 for문으로 정렬한 c의 값을 sb에 append
5. 생성한 sb를 String으로 변환 후 출력
Arrays.sort()
1. Arrays.sort()으로 오름차순이 아닌 람다식 Comparator를 사용하여 내림차순으로 정렬했다
2. (a,b)->b-a 를 통해 b가 더 크면 앞에 오게 되는 내림차순으로 정렬이 된다
3. Character인 c 의 배열을 정렬했기에 알파벳 크기순으로 정렬이 된다