이 튜토리얼에서는 문자열의 앞 절반과 뒷 절반에 있는 문자들을 역순으로 교대로 결합하여 새로운 문자열을 만드는 C++ 프로그램을 작성해 보겠습니다.
예를 들어 "tutorialspoints"라는 문자열이 주어지면, 앞 절반과 뒷 절반을 각각 끝에서부터 한 글자씩 번갈아 가져와 새로운 문자열을 구성하게 됩니다.
문제 해결 단계
문자열을 초기화합니다.
문자열의 길이를 구합니다.
첫 번째 절반과 두 번째 절반의 인덱스를 저장합니다.
문자열의 두 절반 끝에서부터 반복하면서 각 문자를 새 문자열에 하나씩 추가합니다.
완성된 새 문자열을 출력합니다.
예제 코드
전체 코드를 살펴보겠습니다.
#include <bits/stdc++.h>
using namespace std;
void getANewString(string str) {
int str_length = str.length();
int first_half_index = str_length / 2, second_half_index = str_length;
string new_string = "";
while (first_half_index > 0 && second_half_index > str_length / 2) {
new_string += str[first_half_index - 1];
first_half_index--;
new_string += str[second_half_index - 1];
second_half_index--;
}
if (second_half_index > str_length / 2) {
new_string += str[second_half_index - 1];
second_half_index--;
}
cout << new_string << endl;
}
int main() {
string str = "tutorialspoints";
getANewString(str);
return 0;
}코드 설명
first_half_index는 앞 절반의 마지막 문자 위치에서, second_half_index는 문자열의 맨 끝에서 시작합니다. while 루프가 실행되는 동안 앞 절반과 뒷 절반에서 각각 한 글자씩 가져와 새 문자열에 추가한 뒤 인덱스를 감소시킵니다. 문자열 길이가 홀수인 경우를 대비해, 루프가 끝난 후 남아 있는 문자를 처리하는 if 문도 함께 포함되어 있습니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
asitrnoitouptsl
마무리
이렇게 두 개의 인덱스를 활용하면 문자열을 역순으로 교차 결합하는 작업을 간단하게 구현할 수 있습니다. 튜토리얼에 대해 궁금한 점이나 질문이 있다면 댓글로 남겨 주세요.