자바에서 문자열 뒤집기란?
이 글에서는 자바(Java)로 문자열을 뒤집는 방법을 소개합니다. 문자열(String)은 하나 이상의 문자로 구성되며 큰따옴표(" ")로 묶어 표현하는 데이터 타입입니다. 문자열 뒤집기란 문자열을 오른쪽에서 왼쪽으로, 즉 거꾸로 출력하는 작업을 말합니다.
아래는 실제 실행 결과 예시입니다.
입력값:
The string is defined as: Java Program
기대 출력값:
The reversed string is: margorP avaJ
알고리즘
1단계 - 시작 2단계 - input_string(원본 문자열)과 reverse_string(역순 문자열)이라는 두 개의 String 변수, 그리고 temp라는 char 변수를 선언한다. 3단계 - 변수 값을 정의(초기화)한다. 4단계 - for 반복문으로 문자열을 순회하면서 i번째 문자를 temp에 저장한 뒤, 'temp + reverse_string'을 다시 reverse_string에 대입한다. 즉, 원본 문자열의 앞 문자를 역순 문자열의 맨 앞에 계속 붙이는 방식이다. 5단계 - 결과를 출력한다. 6단계 - 종료
예제 1: main 메서드에서 전체 로직 구현하기
이 예제에서는 모든 연산을 하나의 main 함수 안에서 함께 처리합니다.
public class ReverseString {
public static void main (String[] args) {
String input_string = "Java Program", reverse_string = "";
char temp;
System.out.println("The string is defined as: " + input_string);
for (int i = 0; i < input_string.length(); i++) {
temp = input_string.charAt(i);
reverse_string = temp + reverse_string;
}
System.out.println("\nThe reversed string is: " + reverse_string);
}
}실행 결과
The string is defined as: Java Program The reversed string is: margorP avaJ
예제 2: 객체 지향 방식으로 함수 분리하기
이 예제에서는 연산 로직을 별도의 함수로 캡슐화하여 객체 지향 프로그래밍 스타일로 구현합니다.
public class ReverseString {
static void reverse(String input_string){
String reverse_string = "";
char temp;
for (int i = 0; i < input_string.length(); i++) {
temp = input_string.charAt(i);
reverse_string = temp + reverse_string;
}
System.out.println("\nThe reversed string is: " + reverse_string);
}
public static void main (String[] args) {
String input_string = "Java Program";
System.out.println("The string is defined as: " + input_string);
reverse(input_string);
}
}실행 결과
The string is defined as: Java Program The reversed string is: margorP avaJ
더 간단한 방법: StringBuilder 활용하기
자바는 문자열 뒤집기를 위한 내장 기능도 제공합니다. StringBuilder 클래스의 reverse() 메서드를 사용하면 반복문 없이 한 줄로 문자열을 뒤집을 수 있습니다.
public class ReverseStringSimple {
public static void main (String[] args) {
String input_string = "Java Program";
String reverse_string = new StringBuilder(input_string).reverse().toString();
System.out.println("The reversed string is: " + reverse_string);
}
}마무리
for 반복문을 이용한 방식은 문자열 뒤집기의 기본 원리를 익히는 데 유용하지만, 매 반복마다 새로운 문자열 객체가 생성되어 시간 복잡도가 O(n²)입니다. 반면 StringBuilder의 reverse() 메서드는 O(n)으로 더 효율적이므로, 실무에서는 가독성과 성능 면에서 유리한 StringBuilder 사용을 권장합니다.