자바에서 문자열을 알파벳 순으로 정렬하는 것은 문자열 처리에서 자주 활용되는 기본적인 기술입니다. 이 글에서는 toCharArray() 메서드와 Arrays.sort()를 조합하는 방법과, 정렬 알고리즘을 직접 구현하는 방법, 총 두 가지 방식을 예제 코드와 함께 살펴봅니다.
1. toCharArray() 메서드 활용하기
toCharArray() 메서드는 문자열(String)을 문자 배열(char 배열)로 변환하여 반환합니다. 이 메서드를 사용해 문자열을 알파벳 순으로 정렬하려면 다음 단계를 따르세요.
- 정렬할 문자열을 준비합니다.
- toCharArray() 메서드를 사용해 문자열을 문자 배열로 변환합니다.
- Arrays 클래스의 sort() 메서드로 배열을 오름차순 정렬합니다.
- 정렬된 배열을 String 생성자에 전달하여 다시 문자열로 변환합니다.
예제 코드
import java.util.Arrays;
import java.util.Scanner;
public class SortingString {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a string value: ");
String str = sc.nextLine();
char charArray[] = str.toCharArray();
Arrays.sort(charArray);
System.out.println(new String(charArray));
}
}
실행 결과
Enter a string value: Tutorialspoint Taiilnooprsttu
위 코드는 입력받은 문자열 "Tutorialspoint"의 각 문자를 사전 순으로 재배열하여 "Taiilnooprsttu"를 출력합니다. 가장 간결하고 실무에서 널리 쓰이는 방식입니다.
2. 정렬 알고리즘을 직접 구현하기
라이브러리 메서드에 의존하지 않고 선택 정렬(selection sort) 방식으로 직접 정렬할 수도 있습니다. 절차는 다음과 같습니다.
- 정렬할 문자열을 준비합니다.
- toCharArray() 메서드로 문자열을 문자 배열로 변환합니다.
- 배열의 첫 번째 요소와 두 번째 요소를 비교합니다.
- 앞의 요소가 더 크다면 두 요소의 위치를 서로 교환(swap)합니다.
- 이어서 두 번째 요소와 세 번째 요소를 비교하고, 필요하면 교환합니다.
- 이 과정을 배열의 끝까지 반복합니다.
예제 코드
import java.util.Arrays;
import java.util.Scanner;
public class SortingString {
public static void main(String args[]) {
int temp, size;
Scanner sc = new Scanner(System.in);
System.out.println("Enter a string value: ");
String str = sc.nextLine();
char charArray[] = str.toCharArray();
size = charArray.length;
for(int i = 0; i < size; i++ ) {
for(int j = i+1; j < size; j++) {
if(charArray[i]>charArray[j]) {
temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = (char) temp;
}
}
}
System.out.println("Sorted array: "+Arrays.toString(charArray));
}
}
실행 결과
Enter a string value: Tutorialspoint Sorted array: [T, a, i, i, l, n, o, o, p, r, s, t, t, u]
이중 for문을 사용해 모든 요소를 서로 비교하며 작은 값을 앞쪽으로 옮기는 방식입니다. 시간 복잡도는 O(n²)으로 Arrays.sort()(O(n log n))보다 느리지만, 정렬 원리를 학습하거나 면접 준비에 유용한 방법입니다.
마무리
간단히 요약하면, 실무에서는 toCharArray()와 Arrays.sort()를 조합한 첫 번째 방법을 권장하며, 정렬 알고리즘의 동작 원리를 익히고 싶다면 두 번째 방법을 직접 구현해 보는 것이 좋습니다. 상황에 맞는 방법을 선택해 효율적으로 문자열을 정렬해 보세요.