전체적인 과정을 살펴보면 각각의 문자열을 한자리씩 끊어서 char 타입의 배열로 만들어준 다음, char 타입의 배열을 정렬하는 방식으로 진행하는 것이다..

 

이 과정을 스트림을 사용하여 구현하기 위해서는, 다음과 같은 순서로 진행한다.

  1. 문자열을 chars() 메소드를 사용하여 Intstream으로 바꿔준다.
  2. Intstream을 박싱하여 IntegerStream으로 바꾸어준다.
  3. sorted 메서드를 사용하여 정렬된 스트림을 얻는다. 이 때, Comparators.reverseOrder를 인자로 넘겨주면 내림차순으로 정렬된다.
  4. 이후 정렬된 스트림을 int[] 타입의 배열로 얻어준 다음, Char형으로 바꿔주면서 한자리씩 추가해주는 방식으로 정렬된 문자열을 얻을 수 있다.

 

- char형 타입을 스트림으로 다룰때는 잘 되지 않는 점이 많으니 intstream으로 간주하고 int 배열로 처리하는것이 훨씬 편하다. 맨 마지막에 (char)만 붙여주면 아스키 코드가 문자화 되니까ㅎㅎ

 

import java.util.Comparator;

class Solution {
    public String solution(String s) {
        String answer = "";

        int[] temp = s.chars()
                .boxed()
                .sorted(Comparator.reverseOrder())
                .mapToInt(i -> i)
                .toArray();
        for (int ch : temp) {
            answer += (char)ch;
        }
        return answer;
    }
}

+ Recent posts