본문 바로가기
Computer/Algorithm_Java

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

by HJ0216 2023. 10. 17.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

Language: Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Arrays;
 
class Solution {
    public String solution(String s) {
        String answer = "";
        char[] sToCharArr = new char[s.length()];
        for(int i=0; i<s.length(); i++){
            sToCharArr[i] = s.charAt(i);
        }
        Arrays.sort(sToCharArr);
        
        StringBuilder sb = new StringBuilder();
        for(int i=s.length()-1; i>-1; i--){
            sb.append(sToCharArr[i]);
        }
        answer = sb.toString();
        return answer;
    }
}
 
 

1. sToCharArr[i] = s.charAt(i)

    - String → char[]

2. Arrays.sort(sToCharArr)

    - 오름차순 정렬

    - Collections.reverseOrder() 사용 시, 

        - error: no suitable method found for sort(char[],Comparator<Object>) 발생

3. StringBuilder sb = new StringBuilder()

    -역순으로 문자열을 저장할 StringBuilder 선언

4. for(int i=s.length()-1; i>-1; i--)

    - 역순으로 저장

5. answer = sb.toString()

    - StringBuilder → String

 

 

😮 찾아본 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Arrays;
 
class Solution {
    public String solution(String s) {
        String answer = "";
        char[] sToCharArr = s.toCharArray();
        Arrays.sort(sToCharArr);
        
        answer = new StringBuilder(new String(sToCharArr))
            .reverse()
            .toString();
        
        return answer;
    }
}
 
 

1. new StringBuilder(new String(sToCharArr))

    - char[] → String

2. reverse()

    - StringBuilder 내 reverse 함수 사용

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Arrays;
import java.util.Collections;
 
class Solution {
    public String solution(String s) {
        String answer = "";
        
        String[] sArr = s.split("");
        Arrays.sort(sArr, Collections.reverseOrder());
 
        StringBuilder sb = new StringBuilder();
        for(String str : sArr){
            sb.append(str);
        }
        
        answer = sb.toString();
        
        return answer;
    }
}
 
 

1. String[] sArr = s.split("")

    - 문자 1개씩 split → String[]

2. Arrays.sort(sArr, Collections.reverseOrder())

    - 객체: Collections.reverseOrder 사용

 

 

 

🔗 소스 코드
GitHub

 

📚 참고 자료

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr