코테 문제를 풀다가, StringBuilder 클래스를 사용하게 되어, StringBuilder 클래스가 어떤것인지 정리하기 위해 작성된 포스트입니다!

우선 코테 문제는 이렇게 간단합니다.
저 문제의 해결과정은,
- long형 n을 문자열로 변환
- 문자열을 객체형 문자 배열로 변환
- 변환된 배열에서 내림차순으로 정렬
- 문자 배열(내림차순된 배열)을 다시 문자열로 변환
- 문자열을 다시 long형으로 변환
이런 프로세스로 진행됩니다.
코드로 나타내면, 이런 코드가 됩니다.
import java.util.Arrays;
import java.util.Collections;
class Solution {
public long solution(long n) {
// 1. 숫자를 문자열로 변환
String s = String.valueOf(n);
// 2. 문자열을 Character[] 객체형 배열로 변환
Character[] charArray = new Character[s.length()];
for (int i = 0; i < s.length(); i++) {
charArray[i] = s.charAt(i);
}
// 3. 내림차순 정렬
Arrays.sort(charArray, Collections.reverseOrder());
// 4. 정렬된 문자 배열을 문자열로 변환
StringBuilder sb = new StringBuilder();
for (Character c : charArray) {
sb.append(c); // 문자 하나씩 StringBuilder에 추가
}
// 5. 문자열을 다시 long으로 변환
long answer = Long.parseLong(sb.toString());
return answer;
}
}
문자열로 변환하는 과정에서 StrigBuilder가 사용된것을 볼 수 있습니다.
StringBuilder는 자바에서 문자열을 효율적으로 다룰 수 있도록 제공되는 클래스입니다.
String 클래스(String클래스는 불변) 와 달리 가변(mutable) 객체로 문자열을 변경할 때마다 새로운 객체를 생성하지 않고 동일한 객체 안에서 수정합니다. 쉽게 생각하면 문자열을 조작해야 할 때, StringBuilder클래스를 활용하여 조작하면 됩니다.
append()
문자열 끝에 추가합니다.StringBuilder sb = new StringBuilder("Hello"); sb.append(" Wolrd"); System.out.println(sb.toString()); // 출력 : Hello World
insert()
특정 위치에 문자열을 삽입합니다.StringBuilder sb = new StringBuilder("Hello"); sb.insert(5, " Java"); System.out.println(sb.toString()); // 출력 : Hello Java
delete()
특정 위치의 문자를 삭제합니다.StringBuilder sb = new StringBuilder("Hello World"); sb.delete(5, 11); // 인덱스 5부터 10까지 삭제 System.out.println(sb.toString()); // 출력: Hello
reverse()
문자열을 뒤집습니다.StringBuilder sb = new StringBuilder("12345"); sb.reverse(); System.out.println(sb.toString()); // 출력 : 54321
toString()
StringBuilder객체를 문자열(String)로 변환합니다.
StringBuilder는 문자열을 효율적으로 조작하기 위한 가변 클래스입니다.
문자열을 반복해서 추가, 수정, 삭제하는 작업이 필요할 때 String 대신 StringBuilder를 사용하면 성능을 크게 개선할 수 있습니다.