Practice - 문자열 내림차순으로 배치하기
문제
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
입출력 예
s | return |
---|---|
“Zbcdefg” | “gfedcbZ” |
풀이
import java.util.Arrays;
class Solution {
public String solution(String s) {
String[] arr = new String[s.length()];
for(int i = 0; i < s.length(); i ++){
arr[i] = s.substring(i,i+1);
}
Arrays.sort(arr);
String answer = "";
for(int i = arr.length; i > 0; i--){
answer += arr[i-1];
}
return answer;
}
}
개선점
char[] sol = str.toCharArray();
Arrays.sort(sol);
return new StringBuilder(new String(sol)).reverse().toString();
toCharArray() 메소드는 문자열을 한글자씩 쪼개서 char 타입의 배열에 넣어준다
new String(char배열)을 해주면 String으로 만들 수도 있다
String도 클래스! 때문에 String 배열에 연산 등의 변화를 줄 때 인스턴스 생성 등의 불필요한 작업이 생겨 과부하가 올 수 있다
그럴 때 이용하는게 StringBuilder 클래스!
공간을 넉넉하게 만들어 연산 과정에서 새로운 인스턴스를 생성하지 않으면서 변화를 줄 수 있다
끝나고 toString()메소드 거치는 과정 필요
문자열 뒤집어주는 reverse 메소드 제공! String 클래스는 안해줌