알고리즘

[알고리즘] 프로그래머스 lv.1 문자열 내림차순으로 배치하기 자바

kimslab01 2024. 10. 4. 11:59

 

 

 

 

문제 설명

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

 

 

 

제한사항

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

 

 

 

입출력 예

s return
"Zbcdefg" "gfedcbZ"

 

 

 

 

코드

import java.util.Arrays;

class Solution {
    public String solution(String s) {
        char[] arr = s.toCharArray();
        Arrays.sort(arr);
        
        StringBuffer sb = new StringBuffer(new String(arr));
        String answer = sb.reverse().toString();
        
        return answer;
    }
}

 

 

 

 

설명

 

  1. char[] arr = s.toCharArray();
    • 문자열은 수정할 수 없는 객체이기 때문에 배열로 전환 후에 문자를 다루기 위해 문자열 s를 문자 배열(arr[])로 변환
  2. Arrays,sort(arr);
    • arr 배열을 알파벳 순의 오름차순으로 정렬해주는 메서드.
  3. StringBuffer sb = new StringBuffer(new String(arr));
    • StringBuffer는 문자열을 수정할 수 있는 객체. 정렬된 문자 배열 arr를 StringBuffer 객체로 생성
  4. String answer = sb.reverse().toString();
    • StringBuffer의 reverse() 메서드를 사용하여 문자열을 역순 정렬.그 결과를 다시 toString()을 통해 문자열로 변환하여 answer 변수에 저장
  5. return answer;
    • 최종적으로 역순으로 정렬된 문자열 반환

 

 

 

 

전체 과정

  1. 문자 배열로 변환: ['Z', 'b', 'c', 'd', 'e', 'f', 'g']
  2. 알파벳 순으로 정렬: ['Z', 'b', 'c', 'd', 'e', 'f', 'g'] → ['Z', 'b', 'c', 'd', 'e', 'f', 'g']
  3. 역순 변환: "gfedcbZ"
  4. 결과: "gfedcbZ"
  5. 결과 반환