개요
이 튜토리얼에서는 주어진 문자열을 N개의 동일한 부분으로 나누는 C++ 프로그램을 작성해 보겠습니다. 만약 문자열을 N등분할 수 없다면 균등 분할이 불가능하다는 메시지를 출력하도록 처리합니다.
문제 해결 접근 방식
문제를 해결하기 위한 단계는 다음과 같습니다.
문자열과 분할 개수 N을 초기화합니다.
size 메서드를 사용해 문자열의 길이를 구합니다.
문자열을 N개의 부분으로 나눌 수 있는지 확인합니다.
균등하게 나눌 수 없다면 안내 메시지를 출력합니다.
나눌 수 있다면 문자열을 순회하며 각 부분을 출력합니다.
예제 코드
전체 코드를 살펴보겠습니다.
#include <bits/stdc++.h>
using namespace std;
void divideTheString(string str, int n) {
int str_length = str.size();
if (str_length % n != 0) {
cout << "Can't divide string into equal parts" << endl;
return;
}
int part_size = str_length / n;
for (int i = 0; i < str_length; i++) {
if (i != 0 && i % part_size == 0) {
cout << endl;
}
cout << str[i];
}
cout << endl;
}
int main() {
string str = "abcdefghij";
divideTheString(str, 5);
return 0;
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
ab cd ef gh ij
코드 설명
핵심 로직은 매우 간단합니다. 먼저 문자열 길이가 N으로 나누어떨어지는지 검사하고, 나누어떨어지지 않으면 균등 분할이 불가능하다는 메시지를 출력한 뒤 함수를 종료합니다. 나누어떨어지는 경우에는 전체 길이를 N으로 나눈 값인 part_size를 계산하고, 반복문을 돌면서 part_size 간격마다 줄바꿈을 출력해 각 부분을 별도의 줄에 표시합니다. 위 예제에서는 길이가 10인 문자열 "abcdefghij"를 5개 부분으로 나누어 두 글자씩 출력했습니다.
마무리
이 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.