StringBuilder는 Java에서 문자열을 효율적으로 처리하기 위한 클래스이다. String과는 다르게 변경 가능한(mutable) 문자열 객체를 제공한다. 문자열을 여러 번 조작하거나 수정해야 할 때, StringBuilder를 사용하면 성능을 크게 개선할 수 있다.
StringBuilder의 주요 특징
1. 변경 가능(Mutable)
- String은 불변(immutable)이기 때문에 문자열을 수정할 때마다 새로운 객체를 생성한다.
- 반면 StringBuilder는 기존 객체를 수정하므로 메모리 사용량과 처리 속도가 더 효율적이다.
2. 빠른 성능
- 문자열을 여러 번 연결하거나 수정해야 할 경우, StringBuilder는 String보다 훨씬 빠르다.
3. 메서드 제공
- 문자열 조작을 위한 다양한 메서드를 제공한다.
- append(String str) : 문자열을 이어붙임.
- insert(int offset, String str) : 특정 위치에 문자열 삽입.
- delete(int start, int end) : 특정 범위의 문자열 삭제.
- reverse() : 문자열 뒤집기.
- toString() : StringBuilder 객체를 String으로 변환.
실습
문제
https://www.acmicpc.net/problem/10871
풀이
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// N, X 입력받기
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int X = Integer.parseInt(st.nextToken());
// N개의 정수 입력받아 처리
st = new StringTokenizer(br.readLine());
StringBuilder result = new StringBuilder(); // 결과 문자열을 저장할 StringBuilder 생성
for (int i = 0; i < N; i++) {
int num = Integer.parseInt(st.nextToken());
if (num < X) {
result.append(num).append(" "); // X보다 작은 값만 저장
}
}
// 결과 출력 (불필요한 공백 제거 후 출력)
System.out.println(result.toString().trim());
}
}
입력
10 5
1 10 4 9 2 3 8 5 7 6
출력
1 4 2 3
System.out.println(result.toString().trim()); 부연 설명
1. toString()
- StringBuilder 객체를 문자열(String)로 변환한다.
- StringBuilder는 문자열을 조작할 수 있지만, 출력하거나 반환하려면 String 타입으로 변환해야한다.
2. .trim()
- 문자열 양쪽에 있는 공백을 제거한다.
- 예를 들어, result에 "1 4 2 3 "처럼 마지막에 불필요한 공백이 추가될 수 있는데, 이를 제거한다.
정리
StringBuilder의 장점
- 문자열을 반복적으로 수정하거나 조작할 때, 메모리와 성능에서 큰 이점을 제공.
- 코딩 테스트같은 대규모 문자열 처리 작업에 적합.
toString()
- StringBuilder의 내용을 문자열로 변환.
.trim()
- 양 끝의 불필요한 공백 제거
'Coding Test' 카테고리의 다른 글
ArrayList (0) | 2025.02.07 |
---|---|
HashSet이란?(+ TreeSet, LinkedHashSet) (0) | 2025.02.07 |
BufferedReader를 사용하는 이유 (0) | 2025.02.04 |
코딩 테스트 준비 (0) | 2025.02.03 |
문자 개수 세기 (0) | 2024.07.15 |