StringBuilder란?

Federico-15·2024년 12월 17일

자바 코테

목록 보기
2/2

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

우선 코테 문제는 이렇게 간단합니다.

저 문제의 해결과정은,

  1. long형 n을 문자열로 변환
  2. 문자열을 객체형 문자 배열로 변환
  3. 변환된 배열에서 내림차순으로 정렬
  4. 문자 배열(내림차순된 배열)을 다시 문자열로 변환
  5. 문자열을 다시 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가 사용된것을 볼 수 있습니다.


1. StringBuilder란?

StringBuilder는 자바에서 문자열을 효율적으로 다룰 수 있도록 제공되는 클래스입니다.
String 클래스(String클래스는 불변) 와 달리 가변(mutable) 객체로 문자열을 변경할 때마다 새로운 객체를 생성하지 않고 동일한 객체 안에서 수정합니다. 쉽게 생각하면 문자열을 조작해야 할 때, StringBuilder클래스를 활용하여 조작하면 됩니다.


2. StringBuilder 주요 메서드 정리

  1. append()
    문자열 끝에 추가합니다.
StringBuilder sb = new StringBuilder("Hello");
sb.append(" Wolrd");
System.out.println(sb.toString()); // 출력 : Hello World
  1. insert()
    특정 위치에 문자열을 삽입합니다.
StringBuilder sb = new StringBuilder("Hello");
sb.insert(5, " Java");
System.out.println(sb.toString()); // 출력 : Hello Java
  1. delete()
    특정 위치의 문자를 삭제합니다.
StringBuilder sb = new StringBuilder("Hello World");
sb.delete(5, 11); // 인덱스 5부터 10까지 삭제
System.out.println(sb.toString()); // 출력: Hello
  1. reverse()
    문자열을 뒤집습니다.
StringBuilder sb = new StringBuilder("12345");
sb.reverse();
System.out.println(sb.toString()); // 출력 : 54321
  1. toString()
    StringBuilder 객체를 문자열(String)로 변환합니다.

3. 결론

StringBuilder는 문자열을 효율적으로 조작하기 위한 가변 클래스입니다.
문자열을 반복해서 추가, 수정, 삭제하는 작업이 필요할 때 String 대신 StringBuilder를 사용하면 성능을 크게 개선할 수 있습니다.

profile
한 방 있는, 묵직한 개발자

0개의 댓글