백준 Baekjoon

[C언어] 백준 2902 : KMP는 왜 KMP일까?

sujo 2020. 7. 22. 13:38

백준 2902 : KMP는 왜 KMP일까?

 

문제 링크

https://www.acmicpc.net/problem/2902

 

2902번: KMP는 왜 KMP일까?

문제 KMP 알고리즘이 KMP인 이유는 이를 만든 사람의 성이 Knuth, Morris, Prett이기 때문이다. 이렇게 알고리즘에는 발견한 사람의 성을 따서 이름을 붙이는 경우가 많다. 또 다른 예로, 유명한 비대칭

www.acmicpc.net

 

 

문제 내용

(요약) 입력받은 이름의 첫번째 글자만 엮서 새로 출력한다.

입력은 한 줄로 이루어져 있고, 최대 100글자의 영어 알파벳 대문자, 소문자, 그리고 하이폰으로만 이루어져 있다. 첫 번째 글자는 항상 대문자이다. 그리고, 하이픈 뒤에는 반드시 대문자이다. 그 외의 모든 문자는 소문자이다.

ex) Knuth-Morris-Pratt → KMP

 

 

Idea

문제의 핵심은 하이픈 뒤의 문제를 제외한 문자들은 모두 소문자로 이루어져 있다는 것을 파악하면 쉽게 풀 수 있는 문제이다. 이 문제는 하이픈 뒤의 대문자만을 출력하면 되므로 ctype.h에 있는 isupper을 사용하면 손쉽게 프로그래밍 할 수 있다.

 

  • isupper(char) : 해당 문자가 대문자이면 1, 아니면 0을 리턴한다.

 

 

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
int main() {
    char name[101];
    scanf("%s", name);
 
    for (int i = 0; i < strlen(name); i++)
        if (isupper(name[i]))
            printf("%c", name[i]);
    printf("\n");
 
    return 0;
}
cs