본문 바로가기

프로그래머스 코딩(자바)/Level 1

Programmers Level 1 - 문자열 내림차순으로 배치하기

728x90

문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

 
제한 사항
  • str은 길이 1 이상인 문자열입니다.
입출력 예 
s return
"Zbcdefg" "gfedcbZ"

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Arrays;
import java.util.Comparator;
class Solution {
    public String solution(String s) {
        String[] ar = s.split("");
        Arrays.sort(ar, new Comparator<String>() {
            public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
        });
        return String.join("",ar);
    }
}
cs

 

1
2
3
4
5
6
7
8
9
import java.util.Collections;
import java.util.Arrays;
class Solution {
    public String solution(String s) {
        String[] ar = s.split("");        
Arrays.sort(ar, Collections.reverseOrder());
        return String.join("", ar);
    }
}
cs

 

  1글자씩 잘라 String 배열을 만들고 역순으로 정렬한 후 다시 String으로 결합하였다.

 

1
2
3
4
5
6
7
8
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Collectors;
class Solution {
    public String solution(String s) {
        return Arrays.stream(s.split("")).sorted(Collections.reverseOrder()).collect(Collectors.joining());
    }
}
cs

 

  Stream으로 만들고 역순으로 정렬하여 다시 문자열로 결합 하였다.

 

1
2
3
4
5
6
7
import java.util.Collections;
import java.util.stream.Collectors;
class Solution {
    public String solution(String s) {
        return s.chars().mapToObj(v->(char)v+"").sorted(Collections.reverseOrder()).collect(Collectors.joining());
    }
}
cs

 

 IntStream을 maptoObj()로 Stream<String>으로 만들고 역순 정렬하여 문자열로 결합하였다.

 

728x90