✔️문제
- 대문자는 소문자로, 소문자는 대문자로 변환하시오
- 입력: helloWorlD
- 정답: HELLOwORLd
📍정답
package _05_CapToLow;
public class Main_char {
// 1.char배열 사용
public static void main(String[] args) {
String input = "helloWorlD";
char[] arr = input.toCharArray();
System.out.print(arr);
System.out.println();
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= 'a' && arr[i] <= 'z') { // 소문자->대문자
arr[i] = (char) (arr[i] + 'A' - 'a'); // 'a' 'b' ~ 'z' 'A' 'B' 'C'
} else if (arr[i] >= 'A' && arr[i] <= 'Z') {// 대문자->소문자
arr[i] = (char) (arr[i] - ('A' - 'a'));
}
}
System.out.print(arr);
}
}
package _05_CapToLow;
public class Main_StringBuilder {
// 2.StringBuilder 사용
public static void main(String[] args) {
String input = "helloWorlD";
String result = convertCase(input);
System.out.print(result);
}
private static String convertCase(String input) {
StringBuilder sb = new StringBuilder();
for (char c : input.toCharArray()) {
// 대문자인 경우-> 소문자로 변환
if (Character.isUpperCase(c)) {
sb.append(Character.toLowerCase(c));
// 소문자인 경우-> 대문자로 변환
} else if (Character.isLowerCase(c)) {
sb.append(Character.toUpperCase(c));
// 알바벳이 아닌 경우 그대로 추가
} else {
sb.append(c);
}
}
return sb.toString(); //메서드 종료
// throw new UnsupportedOperationException("Unimplemented method
// 'convertCase'");
}
}
※ StringBuilder란?
더보기
- Java에서 문자열을 다룰 때 사용되는 클래스로, String과 달리 가변(mutable) 객체임
- 즉, StringBuilder를 사용하면 문자열을 변경할 때 새로운 객체를 생성하지 않고도 수정할 수 있어 성능이 향상됨!
String vs StringBuilder vs StringBuffer 비교
| 특징 | String(불변) | StringBuilder(가변) | StringBuffer(가변, 동기화) |
| 가변성 | ❌ 불변 | ✅ 가변 | ✅ 가변 |
| 속도 | 느림 (새 객체 생성) | 빠름 (단일 쓰레드) | 느림 (동기화 처리) |
| 멀티쓰레드 | ❌ 불가능 | ❌ 불가능 | ✅ 가능 (Thread-safe) |
- 일반적으로 StringBuilder가 가장 빠르고 효율적
- 멀티쓰레드 환경에서는 StringBuffer 사용 고려
StringBuilder 주요 메서드
| 메서드 | 설명 | 예제 |
| append() | 문자열 추가 | sb.append(" World"); |
| insert(index, 문자열) | 특정 위치에 삽입 | sb.insert(5, " Java"); |
| replace(startIndex, endIndex, "변경할 문자열") | 특정 부분 변경 | sb.replace(6, 11, "Java"); |
| delete(startIndex, endIndex) | 문자열 일부 삭제 | sb.delete(5, 11); |
| reverse() | 문자열 뒤집기 | sb.reverse(); |
endIndex 주의
- replace(startIndex, endIndex, newString) 메서드는 startIndex부터 endIndex-1까지의 문자열을 새로운 문자열로 교체
- 즉, endIndex는 포함되지 않고 그 앞 문자까지 변경됨!
실전 예제
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb); // 출력: Hello World
sb.replace(6, 11, "Java");
System.out.println(sb); // 출력: Hello Java
sb.insert(5, ",");
System.out.println(sb); // 출력: Hello, Java
sb.delete(5, 6);
System.out.println(sb); // 출력: Hello Java
sb.reverse();
System.out.println(sb); // 출력: avaJ olleH
}
}
toCharArray()
String 문자열을 char형 배열로 바꿔서 반환해주는 메서드
참고자료
'개발인생 > Altorithm' 카테고리의 다른 글
| [알고리즘 기초 100제] 7. 소수 판별 (1) | 2025.03.09 |
|---|---|
| [알고리즘 기초 100제] 6. 최대공약수 구하기 (0) | 2025.03.09 |
| [알고리즘 기초 100제] 4. 10진수를 2진수로 변환 (0) | 2025.03.09 |
| [알고리즘 기초 100제] 3. 최빈수 구하기 (1) | 2025.03.09 |
| [알고리즘 기초 100제] 2. 피보나치 수열 (0) | 2025.03.09 |