programming

C언어 4차시 Layer7 과제 - 백준 21966

leesu0605 2022. 4. 17. 20:52

코드


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <algorithm>
using namespace std;

int main() {
    int n;
    char str[100001];
    scanf("%d", &n);
    scanf("%s", str);
    if (n <= 25) {
        printf("%s", str);
        return 0;
    }
    else {
        int cant = 0;
        for(int i=11;i<n-12;i++)
        if (str[i] == '.') {
            cant = 1;
            break;
        }
        if (!cant) {
            for (int i = 0; i < 11; i++)
                printf("%c", str[i]);
            printf("...");
            for (int i = n - 11; i < n; i++)
                printf("%c", str[i]);
        }
        else {
            for (int i = 0; i < 9; i++)
                printf("%c", str[i]);
            printf("......");
            for (int i = n - 10; i < n; i++)
                printf("%c", str[i]);
        }
    }
}


· 이 문제는 문제에서 제시한 조건에 따라 입력받은 값을 변형시켜서 출력하는 문제이다.

· 일단 조건이 세 개이므로 나누어서 생각해보았다. 처음에 문자열의 길이가 25 이하면 그냥 출력하라고 했으므로 처음에 문자열 길이가 25이하인지 확인하고, 아니라면 문자열의 12번째부터 문자열의 길이-12(맨 마지막 문자가 '.'일 때는 한 문장으로 취급되므로)까지 돌면서 '.'가 포함돼있는지 아닌지 확인해서 포함돼있으면 앞에서부터 9개 출력하고 '.' 6개 출력하고 문자열의 길이-10부터 맨 끝까지 출력하게 한다. 만일 한 문장 안에 포함돼있으면 앞에서부터 11개 출력하고 '.'3개 출력한 후에 문자열의 길이-11부터 맨 끝까지 출력하게 하면 모든 조건에 대한 대처방식의 로직이 만들어진다.