https://school.programmers.co.kr/learn/courses/30/lessons/12917
문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.제한 사항
str은 길이 1 이상인 문자열입니다.
입출력 예
s return "Zbcdefg" "gfedcbZ"
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;
}
}
s
를 개별 문자로 분할해 배열 words
에 저장words
를 알파벳 순으로 정렬StringBuilder
객체 초기화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)
를 사용하여 정렬된 문자 배열을 하나의 문자열로 결합가변 객체 -> 내부의 문자열 변경 가능
문자열을 연결하거나 추가하는 작업이 더 빠르고 효율적
append(String str): 문자열을 끝에 추가
insert(int offset, String str): 특정 위치에 문자열 삽입
replace(int start, int end, String str): 부분 문자열 대체
delete(int start, int end): 부분 문자열 삭제
reverse(): 문자열 뒤집기
toString(): StringBuilder 객체를 String 으로 변환