문제 설명
문자열 s에 나타나는 문자를 큰 것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한 사항
str은 길이 1 이상인 문자열입니다.
ex:)
1.문자열 s의 각 원소마다 비교해야 하니까 charAt()랑 아스키코드가 떠올랐다.
2. 아스키코드가 떠오르다 보니 값으로 비교하려고 했는데, 그냥 Arrays클래스의 sort 메서드를 사용하기로 했다.
나의 풀이
class Solution {
public String solution(String s) {
String answer = "";
char[] split =s.toCharArray();
Arrays.sort(split);
StringBuilder sb=new StringBuilder(answer);
for(int i=0;i<split.length;i++){
sb.append(split[i]);
}
answer=sb.reverse().toString();
return answer;
}
}
1.String 클래스의 toCharArray() 메서드를 이용해서 문자열의 각 원소를 char배열에 넣어줬다.
2. 그다음 Arrays클래스의 sort기능을 이용하면, 아스키코드값을 기준으로 오름차순으로 정렬이 되는데, 그걸 StringBuilder클래스의 reverse() 메서드를 이용해서 뒤집었다.
3. 정렬을 뒤집으니 역 정렬인셈이다.
바로 역 정렬을 생각하기도 했는데, 메서드를 찾다가 StackOverflow에서는 프리미티브 타입엔 사용이 불가능하기 때문에 새로운 배열을 만들면서 반복문을 돌리는 것보다 나을 거란 생각에 포기했다.
다른 사람의 풀이
문제 해결을 위한 메서드나 오브젝트 사용은 동일했으나 코드가 훨씬 깔끔하다...
더 공부해야겠다.
참고 : stackoverflow.com/questions/5584579/how-to-sort-an-array-in-reverse-order-using-java/5584783
'알고리즘' 카테고리의 다른 글
java]문자열에서 가장 긴 단어 찾기 (0) | 2021.09.02 |
---|---|
프로그래머스] 문자열을 정수로 바꾸기 (0) | 2021.04.16 |
자릿수 더하기 (0) | 2020.10.21 |
수박수박수박수박수박수? (1) | 2020.10.20 |
정수형 배열 중복제거 [같은 숫자는 싫어요] (0) | 2020.08.22 |
댓글