[오늘의 문제] 문자열 내림차순으로 배치하기

shlim55·2025년 7월 4일

코딩테스트

목록 보기
96/223

출처: https://school.programmers.co.kr/learn/courses/30/lessons/12917

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

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

내가 작성한 코드문

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        String arr[] = s.split("");
        
        Arrays.sort(arr, Collections.reverseOrder());
        
        return Arrays.toString(arr);
    }
}

알고보니 생각 이상으로 쉬웠다.

다른 사람의 풀이

import java.util.Arrays;

public class ReverseStr {
    public String reverseStr(String str){
        char[] sol = str.toCharArray();// ① 문자열을 문자 배열로 변환
    Arrays.sort(sol);// ② 문자 배열을 오름차순 정렬 (유니코드 기준)
    return new StringBuilder(new String(sol)).reverse().toString();// ③ 문자열로 만들고 ④ 뒤집은 후 ⑤ 문자열로 변환하여 반환
    }

    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        ReverseStr rs = new ReverseStr();
        System.out.println( rs.reverseStr("Zbcdefg") );
    }
}
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.util.Comparator;

public class ReverseStr {
    public String reverseStr(String str){
        return Stream.of(str.split("")) // ① 문자열을 "" 기준으로 나눠 스트림 생성
    .sorted(Comparator.reverseOrder()) // ② 역순(내림차순) 정렬
    .collect(Collectors.joining()); // ③ 스트림을 문자열로 다시 합침
    }

    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        ReverseStr rs = new ReverseStr();
        System.out.println( rs.reverseStr("Zbcdefg") );
    }
}
import java.util.Arrays;
public class ReverseStr {
    public String reverseStr(String str){
            char[] ch = str.toCharArray(); // ① 문자열 → 문자 배열
        Arrays.sort(ch); // ② 오름차순 정렬 (대소문자 구분 있음)
        StringBuffer st = new StringBuffer(String.valueOf(ch)); // ③ 정렬된 문자 배열을 문자열로 변환 후 StringBuffer로 감쌈
        st.reverse(); // ④ 문자열 뒤집기
        return  st.toString(); // ⑤ 문자열 반환
}
}
profile
Normal Programmer

0개의 댓글