문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한사항
- str은 길이 1 이상인 문자열입니다.
입출력 예
| s | return |
| "Zbcdefg" | "gfedcbZ" |
⭕ 풀이
class Solution {
public String solution(String str) {
char[] arr = str.toCharArray();
for(int i=0;i<arr.length-1;i++) {
char temp = arr[i];
for(int j=i+1;j<arr.length;j++){
if(arr[i]<arr[j]){
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
return String.valueOf(arr);
}
}

✅ 흐름
문자열 메서드를 사용하여 풀이를 해야하나 싶다가
결국 무난하게 가장 기본적인 버블정렬을 사용하였다.
2중 for문 내에서 입력받은 문자열을 char배열로 바꾼뒤
비교 후 뒤의 글자가 더 크다면 둘의 위치를 바꾸는 식으로 진행했다.
⭕ 다른분의 풀이
import java.util.*;
class Solution {
public String solution(String str) {
char[] sol = str.toCharArray();
Arrays.sort(sol);
return new StringBuilder(new String(sol)).reverse().toString();
}
}

다른분들의 풀이에서는 주로 Arrays 의 메서드 sort를 사용하고
StringBuilder를 사용해 뒤집는 식으로 진행하였는데
Arrays.sort를 사용한 풀이는 속도면에서 균일한 속도를 보여주고
내가 풀이한 버블정렬은 아무래도 시간복잡도가 좋지 못해
보통의 케이스에서는 좀 더 빠른 속도를 보여주지만
특정 케이스에서는 Arrays.sort를 사용한 풀이보다 속도가 더 오래걸린다.
-출처
https://school.programmers.co.kr/learn/courses/30/lessons/12917
'Algorithm > Programmers(Java)' 카테고리의 다른 글
| [프로그래머스/Lv.1] 문자열 다루기 기본 (0) | 2022.12.21 |
|---|---|
| [프로그래머스/Lv.1] 약수의 개수와 덧셈 (0) | 2022.12.21 |
| [프로그래머스/Lv.1] 내적 (0) | 2022.12.20 |
| [프로그래머스/Lv.1] 수박수박수박수박수박수? (2) | 2022.12.19 |
| [프로그래머스/Lv.1] 가운데 글자 가져오기 (0) | 2022.12.16 |