프로그래머스/Lv. 1

[프로그래머스 코딩테스트] 문자열 내림차순으로 배치하기(Java)

Sigfriede 2023. 4. 12. 20:28

  문제 설명

  문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.

  s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

 

  제한사항

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

 

  입출력 예

s return
"Zbcdefg" "gfedcbZ"
import java.util.Arrays;
import java.util.Collections;
class Solution {
    public String solution(String s) {
        String[] str = s.split("");
        Arrays.sort(str, Collections.reverseOrder());
        String answer = String.join("", str);
        return answer;
    }
}

  str 배열을 생성하여 문자열 s를 문자로 나누어 할당했습니다. 문제에서 제시한대로 Arrays 클래스의 sort 메소드를 이용하여 문자열을 내림차순으로 정렬했습니다. 오름차순을 정렬할 때와 달리 내림차순을 할 때는 Collections가 필요합니다. 따라서 import도 해주었습니다. 별도 대소문자를 구분하는 조건은 필요하지 않습니다. (이미 아스키코드 상에서 대문자는 65-90, 소문자는 97-122로 분류되어 있기 때문이 아닐까 추측합니다. 대문자를 먼저 오게 해야했다면 번거로웠을 듯 합니다. 아닐 수도 있음!)

배열을 문자열에 직접 할당할 수 없기 때문에, join 메소드를 이용하여 배열을 원소간 구분하는 인자 없이 문자열로 변환한 뒤 할당했습니다.

  문자열을 다루는 문제이니만큼 StringBuilder를 사용하는 풀이도 괜찮을 듯합니다.