#pragma warning(disable:4996)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int N;
scanf("%d", &N);
char S[100][21];
int len[100];
int totallen = 0;
for (int i = 0; i < N; i++) {
scanf("%s", S[i]);
len[i] = strlen(S[i]);
totallen += len[i];
}
if (N > 2) {
int half = (totallen + N - 1) / 2;
int current = 0;
int splitter = 0;
for (int i = 0; i < N; i++) {
if (current + len[i] + i - splitter > half) {
break;
}
current += len[i];
splitter = i + 1;
}
int length1 = 0;
for (int i = 0; i < splitter; i++) {
length1 += len[i];
}
int length2 = totallen - length1;
if (splitter < N && length1 <= length2) {
length1 += len[splitter];
length2 -= len[splitter];
splitter++;
}
for (int i = 0; i < splitter; i++) {
printf("%s", S[i]);
if (i != splitter - 1) {
printf(" ");
}
}
printf("\n");
for (int i = splitter; i < N; i++) {
printf("%s", S[i]);
if (i != N - 1) {
printf(" ");
}
}
printf("\n");
} else {
for (int i = 0; i < N; i++) {
printf("%s\n", S[i]);
}
}
return 0;
}
이런식으로 문장을 나누는 프로그램을 구현했는데 N=2이고 윗 단어보다 아래쪽 단어가 길 경우 자꾸만 두 단어가 합쳐저 나옵니다.
sizeof 글자 길이 써보셨을까요? 문자열 ₩0 널문자가 포함되어 있습니다.
해결됬습니다, 감사합니다!