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

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

kjwc 2023. 3. 9. 16:51
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