본문 바로가기
알고리즘/코딩 - 프로그래머스

[Java][프로그래머스][Level 1] 문자열 내림차순으로 배치하기

by 주남2 2019. 3. 29.
반응형

문제 설명

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

 

제한 사항

  • str은 길이 1 이상인 문자열입니다.

생각

일반적인 오름차순이 아닌 내림차순이다!! Collection의 경우에는 reverse() 함수가 있어 정렬을 하고 뒤집으면 편하지만 이렇게 된다면 ArrayList를 써야 한다. 나는 번거롭게 값을 추가하기가 싫어 배열 상태에서 해결하고자 하였다. 역시나 생각한 것은 Comparator이다.

 

new Comparator을 하면 오버로드를 해야 하는데 여기서 compareto함수를 반대로만 해주면 내림차순으로 정렬이 되겠다 생각했다. compareto(String arg0, String arg1)이면 arg0을 arg1에 비교하는 것이 아니라 arg1을 arg0에 비교한다면 반대로 될 것이라는 생각이 뇌리를 스쳤다. 결과는... 역시 성공적 :)

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
class Solution {
      public String solution(String s) {
          String answer = "";
          
          String[] s1 = new String[s.length()];
          s1 = s.split("");
          
          Arrays.sort(s1, new Comparator<String>() {
 
            @Override
            public int compare(String arg0, String arg1) {
                return arg1.compareTo(arg0);
            }
        });
          
          for(int i=0; i<s1.length; i++) {
              answer += s1[i];
          }
          
          return answer;
      }
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

추가

고수분의 풀이는 역시나 생전 처음보는 StringBuilder이 등장하였다. 이는 따로 글을 작성하여 공부할 예정이다.

반응형