1. 문자열 뒤집기
목표: 입력 문자열을 뒤집어 출력합니다. 예를 들어 "HelloWorld"는 "dlroWolleH"가 됩니다. 빈 문자열이나 공백만 있는 문자열도 처리해야 합니다.
접근 방식
- 문자열을 문자 배열로 변환한 후 양쪽 끝에서부터 교환
- 두 포인터(left, right)를 사용하여 중앙까지 반복
코드
public class StringReversal {
public static void main(String[] args) {
String input = "HelloWorld";
String reversed = reverseString(input);
System.out.println("원본 문자열: " + input);
System.out.println("뒤집힌 문자열: " + reversed);
}
public static String reverseString(String text) {
if (text == null || text.isEmpty()) {
return text;
}
char[] charArray = text.toCharArray();
int start = 0;
int end = charArray.length - 1;
while (start < end) {
char temp = charArray[start];
charArray[start] = charArray[end];
charArray[end] = temp;
start++;
end--;
}
return new String(charArray);
}
}
2. 문자 유형별 개수 세기
목표: 입력 문자열에서 대문자, 소문자, 숫자, 공백, 기타 문자의 개수를 각각 카운팅합니다. 범위 검사는 ASCII 값을 기준으로 합니다.
접근 방식
- Scanner를 사용하여 사용자 입력 받기
- 문자열을 문자 배열로 변환
- 각 문자의 ASCII 범위에 따라 카운터 증가
코드
import java.util.Scanner;
public class CharacterCounter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요: ");
String input = scanner.nextLine();
scanner.close();
char[] chars = input.toCharArray();
int upperCount = 0; // 대문자
int lowerCount = 0; // 소문자
int digitCount = 0; // 숫자
int spaceCount = 0; // 공백
int otherCount = 0; // 기타 문자
for (char ch : chars) {
if (ch >= 'A' && ch <= 'Z') {
upperCount++;
} else if (ch >= 'a' && ch <= 'z') {
lowerCount++;
} else if (ch >= '0' && ch <= '9') {
digitCount++;
} else if (ch == ' ') {
spaceCount++;
} else {
otherCount++;
}
}
System.out.println("대문자 개수: " + upperCount);
System.out.println("소문자 개수: " + lowerCount);
System.out.println("숫자 개수: " + digitCount);
System.out.println("공백 개수: " + spaceCount);
System.out.println("기타 문자 개수: " + otherCount);
}
}