Algorithms/- 프로그래머스

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

자굿 2022. 2. 2. 11:31
 

코딩테스트 연습 - 문자열 내림차순으로 배치하기

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

programmers.co.kr

 

정답

import java.util.*;

class Solution {
    public String solution(String s) {
        if(s.length() == 1){
            return s;
        }

        String[] arr = s.split("");
        Arrays.sort(arr);
        String str = "";
        for(int i=arr.length-1; i>=0; i--){
            str += arr[i];
        }
        return str;
    }
}

 

분석

  • 문자열 다루기 문제

 

참고할 만한 정답

  • StringBuilder를 사용하여 내림차순 정렬
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();
    }
}

 

  • 속도는 느리지만 stream을 사용하면 아래 처럼 풀 수 있다.
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());
    }
}

 

비교 분석

  • StringBuilder를 활용하면 역순 정렬을 쉽게 할 수 있다.
  • StringBuilder에 대한 학습이 필요함.

 

비교 분석 반영

import java.util.*;

class Solution {
    public String solution(String s) {
        if(s.length() == 1){
            return s;
        }

        char[] arr = s.toCharArray();
        Arrays.sort(arr);
        return new StringBuilder(new String(arr)).reverse().toString();
    }
}
반응형