전체적인 과정을 살펴보면 각각의 문자열을 한자리씩 끊어서 char 타입의 배열로 만들어준 다음, char 타입의 배열을 정렬하는 방식으로 진행하는 것이다..
이 과정을 스트림을 사용하여 구현하기 위해서는, 다음과 같은 순서로 진행한다.
- 문자열을 chars() 메소드를 사용하여 Intstream으로 바꿔준다.
- Intstream을 박싱하여 IntegerStream으로 바꾸어준다.
- sorted 메서드를 사용하여 정렬된 스트림을 얻는다. 이 때, Comparators.reverseOrder를 인자로 넘겨주면 내림차순으로 정렬된다.
- 이후 정렬된 스트림을 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;
}
}
'Language > Java' 카테고리의 다른 글
[ Junit ] 테스트 작성 (0) | 2022.02.10 |
---|---|
[ Java ] 쉽게 최대공약수 구하기 (0) | 2022.02.03 |
[알고리즘] Java로 구현한 Union-find (0) | 2021.07.11 |
[알고리즘] HashMap (0) | 2021.07.11 |
[알고리즘] 코테 준비하면서 사용한 자바 클래스 및 메소드 (0) | 2021.07.11 |