프로그래머스 - 문자열 내림차순으로 배치하기(JAVA)

박상훈·2024년 8월 22일

알고리즘

목록 보기
6/6

문제 링크


풀이

정말 간단하게 문자열을 내림차순으로 정렬하면 끝나는 문제이다. C++ 에서는 algorithm 라이브러리의 sort() 함수를 쓰면 됐었지만 java는 익숙치 않아 조금 헤맸던 것 같다.

import java.util.*;

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

        char[] chars = s.toCharArray();
        Arrays.sort(chars);
        
        for(int i=chars.length - 1; i>=0; i--)
            answer += String.valueOf(chars[i]);
        
        return answer;
    }
}

위의 코드를 보면 sort를 진행하고, 반복문을 다시 돌려 내림차순으로 문자열을 정렬한다. 비효율적인 방법이라고 생각해 Arrays.sort(chars, Collections.reverseOrder()); 를 사용하려 했으나 char[]에서 char는 클래스 타입이 아닌 원시 타입이라 Collentions.reversOrder()를 사용하지 못한다.

그래서 생각해 낸 코드가 위의 코드. 그러나 여러 블로그들을 돌아 다니며 코드를 찾아 본 결과 아래와 같은 코드를 발견했다.

  char[] c = s.toCharArray();
  Arrays.sort(c);
  String str = new String(c);
  String answer = new StringBuilder(str).reverse().toString();

결론

원시 타입의 문자열을 처음부터 내림차순으로 정렬하긴 힘들지만, StringBuilder를 사용하여 문자열을 뒤집으면 반복문을 사용하지 않아도 된다! 위의 코드를 적용하여 조금 더 깔끔하게 문제를 풀 수 있는 것으로 보인다.

profile
안녕하세요

0개의 댓글