#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;

}

이 코드로 

Sample Input 1 

2 apple banana

Sample Output 1

apple banana

Sample Input 2 

5 Hello C Programming Wolrd cose101

Sample Output 2

Hello C Programming Wolrd cose101

Sample Input 3 

3 abc abc abc

Sample Output 3

abc abc abc

Sample Input 4 

6 asdasdw a a a a a

Sample Output 4

asdasdw a a a a a

이런식으로 문장을 나누는 프로그램을 구현했는데 N=2이고 윗 단어보다 아래쪽 단어가 길 경우 자꾸만 두 단어가 합쳐저 나옵니다.