문제설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한사항
- str은 길이 1 이상인 문자열입니다.
입출력 예
소스코드&결과
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
// toCharArray() 사용하기
char str[] = s.toCharArray();
Arrays.sort(str);
for(int i = str.length - 1; i >= 0; i--){
answer += str[i];
}
return answer;
}
}
코드 설명
// toCharArray() 사용하기
char str[] = s.toCharArray();
- toCharArray()을 사용하여 문자열을 char 배열로 변환해주었다.
Arrays.sort(str);
- 그 다음 Arrays.sort()를 이용하여 str를 오름차순으로 정렬해주었다.
for(int i = str.length - 1; i >= 0; i--){
answer += str[i];
}
- for문을 이용하여 i를 str의 길이로 초기화 해주고 인덱스가 0부터 시작하기 때문에 -1을 해주었다. i는 0부터 까지로 설정을 해주었고, i--를 해주었다.
return answer;
- 마지막으로 answer값을 리턴해주었다.
다른 사람이 짠 코드
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
import java.util.Arrays;
public class ReverseStr {
public String reverseStr(String str){
char[] sol = str.toCharArray();
Arrays.sort(sol);
return new StringBuilder(new String(sol)).reverse().toString();
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
ReverseStr rs = new ReverseStr();
System.out.println( rs.reverseStr("Zbcdefg") );
}
}
- 이 코드를 보고, StringBuilder에 알게 되었다.
- StringBuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 하는 것이였다!!
- .reverse()는 해당 문자 전체를 뒤집는 것이였다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[JavaScript] 아이스 아메리카노 (0) | 2023.04.05 |
---|---|
[JAVA] 약수의 개수와 덧셈 (0) | 2023.04.04 |
[JAVA] 수박수박수박수박수박수? (0) | 2023.04.03 |
[JAVA] 내적 (0) | 2023.04.03 |
[JAVA] 가운데 글자 가져오기 (0) | 2023.03.31 |