class Solution {
public String solution(String my_string, String letter) {
String answer = "";
char my_letter = letter.charAt(0);
int strLeng = my_string.length();
for(int i = 0; i < strLeng; i++) {
if(my_string.charAt(i) == my_letter)
continue;
answer += my_string.charAt(i);
}
return answer;
}
}
본인이 작성한 코드의 실행 속도가 효율적이지 못한 것 같아 다른 사람들의 풀이과 비교해보자
해결 방법 (2) 는 본인이 했던 방법이랑 유사한 것 같다 .
StringBuilder answer = new StringBuilder();
answer.append(c);
이 코드라인에 있는 StringBuilder와 append() 메서드는 생소해서 정리만 해서 남겨봐야겠다.
StringBuilder와 append 요약
1. StringBuilder란?
StringBuilder는 가변 문자열 객체로, 문자열을 효율적으로 수정, 추가, 삭제할 수 있는 Java 클래스입니다.
(위치는 java.lang 패키지에 포함)
- 문자열 연결이나 수정이 잦을 때 String 대신 사용합니다.
- 기존 객체를 유지하며 작업하므로 메모리와 성능에서 효율적입니다.
2. StringBuilder의 주요 메서드
- append(String str): 문자열을 객체의 끝에 추가합니다.
public class AppendExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb); // 출력: Hello World
}
}
- insert(int offset, String str): 특정 위치에 문자열을 삽입합니다.
public class InsertExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello World");
sb.insert(6, "Java "); // "6"은 삽입 위치
System.out.println(sb); // 출력: Hello Java World
}
}
- replace(int start, int end, String str): 특정 구간의 문자열을 대체합니다.
public class ReplaceExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello Java World");
sb.replace(6, 10, "Beautiful"); // "Java"를 "Beautiful"로 대체
System.out.println(sb); // 출력: Hello Beautiful World
}
}
- delete(int start, int end): 특정 구간의 문자열을 삭제합니다.
public class DeleteExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello Beautiful World");
sb.delete(6, 16); // "Beautiful" 삭제
System.out.println(sb); // 출력: Hello World
}
}
- reverse(): 문자열을 뒤집습니다.
public class ReverseExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello World");
sb.reverse();
System.out.println(sb); // 출력: dlroW olleH
}
}
- toString(): StringBuilder 객체를 문자열(String)로 변환합니다.
public class ToStringExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello World");
String result = sb.toString(); // String으로 변환
System.out.println(result); // 출력: Hello World
}
}
3. append 메서드
append는 기존 문자열의 끝에 새로운 내용을 이어붙이는 메서드입니다.
사용법
java
코드 복사
StringBuilder sb = new StringBuilder("Hello"); sb.append(" World"); // "Hello World" sb.append('!'); // "Hello World!" sb.append(123); // "Hello World!123"
특징
- 다양한 데이터 타입(String, char, int, double, 등)을 처리할 수 있습니다.
- 같은 객체에 추가 작업을 수행하므로 메모리 효율이 높습니다.
4. StringBuilder와 String의 차이점
특징String (불변 객체)StringBuilder (가변 객체)
특성 | 불변 (Immutable) | 가변 (Mutable) |
새로운 객체 생성 | + 연산 시마다 새 객체 생성 | 동일 객체에 내용을 추가 |
성능 | 느림 (반복 작업 시 비효율적) | 빠름 (반복 작업에 적합) |
사용 사례 | 짧은 문자열 조작, 읽기 전용 작업 | 반복적 연결, 수정, 삭제 작업 |
5. 예제: 성능 비교
// String 사용
String result = "";
for (int i = 0; i < 5; i++) {
result += i; // 새로운 객체 생성
}
System.out.println(result); // 결과: "01234"
// StringBuilder 사용
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb.append(i); // 동일 객체에 추가
}
System.out.println(sb.toString()); // 결과: "01234"
결론
- **StringBuilder**는 반복적 문자열 작업(연결, 수정 등)이 필요한 경우 매우 효율적입니다.
- **append**는 문자열의 끝에 데이터를 추가할 때 가장 많이 사용하는 메서드입니다.
- 짧고 간단한 문자열 작업에는 String과 +를, 복잡한 작업에는 StringBuilder를 사용하세요!
'코딩테스트 피드백' 카테고리의 다른 글
코딩테스트(Lv0) 숫자배열 오름차순 정리 후 최대값의 곱 ( sort() 정렬 함수 피드백) (0) | 2025.01.04 |
---|---|
코딩테스트(Lv0) 문자열 뒤집기 (문자열 각 문자 처리 , reverse() 피드백) (1) | 2025.01.03 |
코딩테스트(Lv0) 문자열 배열 원소의 길이 (문자열 길이 호출 , 배열크기 선언 피드백) (0) | 2025.01.03 |
코딩테스트(Lv0) : 입문각도기 (조건문 값 범위 지정 피드백) (0) | 2025.01.02 |