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

Jiwoo·2024년 5월 23일
0

Java

목록 보기
14/25

📌 문자열 내림차순으로 배치하기

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

문제 설명

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

제한 사항

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

입출력 예

s return
"Zbcdefg" "gfedcbZ"
  • 기본적으로 Arrays.sort(words) 하면 대문자가 소문자보다 우선시 되고 알파벳 순으로 정렬된다
  • 주어진 문자열 's'를 개별 문자로 분할한 후, 이 문자를 알파벳 순으로 정렬하고, 이를 역순으로 재배열하여 새로운 문자열을 생성
  • 최종 결과는 원래 문자열의 문자들이 역순으로 정렬된 새로운 문자열
import java.util.Arrays;

class Solution {
    public String solution(String s) {
        String[] words = s.split(""); // 1. 문자열을 개별 문자로 분할
        Arrays.sort(words); // 2. 문자 배열 정렬

        // 3. 정렬된 배열을 역순으로 문자열 빌더에 추가
        StringBuilder sb = new StringBuilder();

		// 역순 반복
        for (int i = words.length - 1; i >= 0; i--) {
            sb.append(words[i]); // 정렬된 배열의 각 문자 StringBuilder에 추가
        }
        String answer = sb.toString(); // 4. 최종 문자열 생성 및 반환
        return answer;
    }
}
  1. 문자열 s를 개별 문자로 분할해 배열 words에 저장
  2. 배열 words를 알파벳 순으로 정렬
  3. 문자열을 효율적으로 생성하기 위한 StringBuilder 객체 초기화
  4. StringBuilder 객체 문자열로 변환

다른 풀이

import java.util.Arrays;

class Solution {
    public String solution(String s) {
        String[] words = s.split("");
        Arrays.sort(words);

        // StringBuilder에 정렬된 문자열을 추가
        StringBuilder sb = new StringBuilder(String.join("", words));

        // 역순으로 변경
        sb.reverse();

        // StringBuilder를 문자열로 변환하여 반환
        return sb.toString();
    }
}
  • String.join("", words)를 사용하여 정렬된 문자 배열을 하나의 문자열로 결합

StringBuiler 클래스

  • 가변 객체 -> 내부의 문자열 변경 가능

  • 문자열을 연결하거나 추가하는 작업이 더 빠르고 효율적

  • append(String str): 문자열을 끝에 추가

  • insert(int offset, String str): 특정 위치에 문자열 삽입

  • replace(int start, int end, String str): 부분 문자열 대체

  • delete(int start, int end): 부분 문자열 삭제

  • reverse(): 문자열 뒤집기

  • toString(): StringBuilder 객체를 String 으로 변환

0개의 댓글