/ PRACTICE

Practice - 문자열 내림차순으로 배치하기

programmers 바로가기

문제

문자열 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 클래스는 안해줌