[Java] 문자열 내림차순으로 배치하기 (programmers)

Haeun Noh·2023년 1월 29일
0

programmers

목록 보기
37/64
post-thumbnail

0129


문제 설명

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


제한 사항

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


입출력 예

sreturn
"Zbcdefg""gfedcbZ"

풀이 방식

char는 문자 각각이 아스키코드값을 가지고 있다. 따라서 아스키 코드 값을 이용해 정렬을 해주면 된다.

우선 주어진 문자열인 schar로 변환해 배열에 값을 하나씩 넣어주기 위해 toCharArray()를 사용한다.

처음에는 중첩 for문을 이용해 아스키코드값을 정렬해주었는데,
후에는 그냥 Arrays.sort()를 사용해도 아스키코드값으로 인식하니 상관없다는 것을 깨달아버렸다.

마지막으로는 charalphabetString.valueOf()로 문자열로 변환한 뒤 리턴했다. 이유는 리턴 타입이 String으로 되어있기 때문이다.

후에는 StringBuilder의 문자열을 거꾸로 해주는 reverse() 메서드를 이용하였다.


소스 코드

// 혼자 처음 짠 코드
class Solution {
    public String solution(String s) {
        
        char[] alphabet = s.toCharArray();
        for (int i = 0; i < alphabet.length; i++) {
            for (int j = 1; j < alphabet.length-i; j++) {
                if ( alphabet[j-1] < alphabet[j] ) {
                    char tmp = alphabet[j-1];
                    alphabet[j-1] = alphabet[j];
                    alphabet[j] = tmp;
                }   
            }
        }
        
        return String.valueOf(alphabet);
    }
} 
// 다른 분들의 코드를 본 뒤 짠 코드
import java.util.Arrays;

class Solution {
    public String solution(String s) {
        
        char[] alphabet = s.toCharArray();
        Arrays.sort(alphabet);
        return new StringBuilder(new String(alphabet)).reverse().toString();
    }
} 

실행결과



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글