본문 바로가기
코딩 테스트/[JAVA] programmers 코딩 테스트 연습

[No.11] 문자열 내림차순으로 배치하기 / 프로그래머스 코딩 테스트 연습 JAVA

by M개발자 2021. 6. 7.
반응형

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


문제 설명

 

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


예시

 

 

src return
"Zbcdefg" "gfedcbZ"

코드 해석 및 전체 코드

자바 알고리즘

1. 문자열 배열 복사 String.toCharArray()

2. 정렬을 이용하여 아스키코드가 큰 순으로 정렬 버블 정렬

3. 배열 → 문자열 변환 new String()

 

1. 문자열 배열 복사

문자열로 정렬을 할 시 문자열 자르는 메서드(charAt())을 사용해야 하므로 

정렬 전 문자열 → char 타입 배열로 변환하는 메소드인 Strng.toCharArray()를 사용한다.

String.toCharArray()
String s1 = "Hello World";
char[] charArr = s1.toCharArray();

 

2. 내림차순 정렬

내림차순은 큰 것부터 작은 순로 정렬한다. 이때, 대문자는 소문자보다 작다는 것은 아스키코드를 이용하면 쉽게 정렬할 수 있다.

 

아스키 코드
A : 65 a : 97
Z : 90 z : 122

따라서 122로 제일 큰 z부터 65로 제일 작은 A 순으로 정렬하면 된다. 

 

여기서 사용한 정렬은 버블 정렬로 서로 인접한 인덱스끼리(j와 j + 1) length - 1(i - 1) 번 반복하여 비교하는 방식이다. 

 

3. 배열 → 문자열 변환

반환 값은 문자열로 

문자열 배열을 문자열로 변환하여 반환해준다.

String s2 = new String(charArr);

 

class Solution {
    public String solution(String s) {
        String answer = "";
        char[] str = s.toCharArray();

        for(int i = 0; i < s.length() - 1; i++){
            for(int j = 0; j < s.length() - 1 - i; j++){
                if((int)str[j] < (int)str[j+1]){
                    char temp = str[j];
                    str[j] = str[j+1];
                    str[j+1] = temp;
                }
            }
        }
        answer = new String(str);

        return answer;
    }
}

github

programmers

반응형

댓글