반응형
문자열 내림차순으로 배치하기
문제 설명
문자열 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;
}
}
반응형
'코딩 테스트 > [JAVA] programmers 코딩 테스트 연습' 카테고리의 다른 글
[No.13] 수박수박수박수박수? / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.08 |
---|---|
[No.12] 문자열 다루기 기본 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.07 |
[No.8] 2016년 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.05 |
[No.7] 두 개 뽑아서 더하기 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.05 |
[No.6] 3진법 뒤집기/ 프로그래머스 코딩 테스트 연습 (0) | 2021.06.03 |
댓글