알고리즘/백준
[백준](중략)-21966 | C
kms0204
2022. 4. 16. 20:50
#include <stdio.h>
int main() {
int n;
char str[100001];
scanf("%d %s", &n, str);
if (n <= 25) {
printf("%s", str);
return 0;
}
for (int j = 11; j < n - 12; j++) {
if (str[j] == '.') {
for (int i = 0; i < 9; i++)
printf("%c", str[i]);
printf("......");
for (int i = n - 10; i < n; i++)
printf("%c", str[i]);
return 0;
}
}
for (int i = 0; i < 11; i++)
printf("%c", str[i]);
printf("...");
for (int i = n - 11; i < n; i++)
printf("%c", str[i]);
return 0;
}
문자열의 길이 n과 문자열(str)을 입력받고, 아래의 규칙에 맞게 요약하는 문제이다.(2<=n<=100,000)
---<규칙>---
-문자열의 길이가 25 이하면 그대로 출력한다.
-문자열의 길이가 25 초과이면, 앞에서부터 11글자, 뒤에서부터 11글자를 제외하고 나머지 부분을 생각한다.
이 나머지 부분이 모두 같은 문장에 속한다면, 생략한 뒤 '...'('.' 3개)으로 바꿔서 출력한다.
-위 두 경우에 해당되지 않는다면 앞에서부터 9글자, 뒤에서부터 10글자만 남기고
중간은 '......'('.' 6개)으로 바꿔서 출력한다.
사용자로부터 n과 str를 입력받는다.
만약 문자열의 길이(n)가 25 이하라면 printf()로 그대로 출력하고
return 0;을 통해 프로그램을 종료한다.
그렇지 않다면 문자열에서 앞에서부터 12번째부터 뒤에서부터 12글자까지 문자를 확인해 봐야하 하는데,
만약 같은 문장에 속했다면('.'가 나오지 않음) 앞, 뒤 부분을 '...'으로 생략하고 출력한다.
그리고 return 0;으로 프로그램을 종료한다.
그렇지 않은 경우라면, 앞에서부터 9글자, 뒤에서부터 10글자만 남기고 나머지를 '......'으로 요약하여 출력한다.