Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C/C++에서 문자열을 거꾸로 뒤집는 다양한 방법 총정리

이 튜토리얼에서는 C/C++에서 문자열을 거꾸로 뒤집는(반전시키는) 다양한 방법을 예제 코드와 함께 살펴보겠습니다.

문자열 반전은 코딩 인터뷰나 알고리즘 문제에서 자주 등장하는 기본 개념입니다. 직접 함수를 구현하는 방법부터 C++ 표준 라이브러리를 활용하는 방법까지, 상황에 맞게 선택할 수 있도록 세 가지 접근 방식을 소개합니다.

1. 사용자 정의 reverse() 함수 활용

가장 기본적인 방법은 문자열의 앞쪽과 뒤쪽 문자를 서로 교환(swap)하며 가운데로 이동하는 방식입니다. 문자열 길이의 절반만큼만 반복하면 되므로 효율적입니다.

#include <bits/stdc++.h>
using namespace std;
// 주어진 문자열을 뒤집는 함수
void reverse_str(string& str){
    int n = str.length();
    for (int i = 0; i < n / 2; i++)
        swap(str[i], str[n - i - 1]);
}
int main(){
    string str = "tutorialspoint";
    reverse_str(str);
    cout << str;
    return 0;
}

이 방식의 장점은 원본 문자열 자체를 변경(제자리 반전)하기 때문에 별도의 메모리 할당이 필요 없다는 점입니다.

2. 내장 reverse() 함수 활용

C++의 <algorithm> 헤더에 포함된 표준 라이브러리 함수인 std::reverse()를 사용하면 한 줄로 간단하게 처리할 수 있습니다. 시작 반복자와 끝 반복자를 인자로 전달하면 해당 범위의 요소들이 순서대로 뒤집힙니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
    string str = "tutorialspoint";
    reverse(str.begin(), str.end());
    cout << str;
    return 0;
}

실무에서는 직접 구현하는 것보다 검증된 표준 라이브러리를 사용하는 것이 코드의 안정성과 가독성 측면에서 권장됩니다.

3. 문자열을 뒤집어서 출력하기

세 번째 방법은 원본 문자열을 변경하지 않고, 뒤에서부터 앞으로 순회하며 문자를 하나씩 출력하는 방식입니다. 원본 데이터를 보존해야 하는 경우에 유용합니다.

#include <bits/stdc++.h>
using namespace std;
void reverse(string str){
    for (int i=str.length()-1; i>=0; i--)
        cout << str[i];
}
int main(void){
    string s = "tutorialspoint";
    reverse(s);
    return (0);
}

실행 결과

세 가지 방법 모두 아래와 동일한 결과를 출력합니다.

tniopslairotut

마무리

정리하면, 제자리에서 문자열을 변경해야 한다면 첫 번째나 두 번째 방법이 적합하고, 원본을 유지하면서 뒤집힌 형태만 확인하고 싶다면 세 번째 방법이 좋습니다. 특히 C++에서는 std::reverse()를 사용하는 것이 가장 간결하고 안전한 선택입니다.