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

❓ 문제

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

제한 사항

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

🖨️ 입출력 예

💡 풀이

class Solution {

    // swap 함수
    void swap(char[] data, int a, int b) {
        char tmp = data[a];
        data[a] = data[b];
        data[b] = tmp;
    }

    // 내림차순 정렬(퀵소트) 함수
    void quickSort(char[] data, int l, int r) {
        int left = l;
        int right = r;
        int pivot = data[(l + r) / 2];

        do {
            while(data[left] > pivot)
                left++;
            while(data[right] < pivot)
                right--;
            if(left <= right) {
                swap(data, left, right);
                left++;
                right--;
            }
        } while (left <= right);

        if(l < right)
            quickSort(data, l, right);
        if(r > left)
            quickSort(data, left, r);
    }

    public String solution(String s) {
        char[] arr = s.toCharArray();
        quickSort(arr, 0, arr.length - 1);
        return new String(arr);
    }
}

📊 정확성 테스트 결과

✏️ comment

  • 정렬은 퀵정렬로 직접 구현해 봄.
  • char[] arr = s.toCharArray();
    -> 문자열을 문자배열로 만들어줌
  • return new String(arr);
    -> 문자 배열을 문자열로 만들어줌.

좋은 웹페이지 즐겨찾기