새소식

⌨️ Algorithms/백준

[Python] 백준 2902번_KMP는 왜 KMP일까?

2023. 4. 7. 18:30

  • -

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

 

2902번: KMP는 왜 KMP일까?

입력은 한 줄로 이루어져 있고, 최대 100글자의 영어 알파벳 대문자, 소문자, 그리고 하이픈 ('-', 아스키코드 45)로만 이루어져 있다. 첫 번째 글자는 항상 대문자이다. 그리고, 하이픈 뒤에는 반드

www.acmicpc.net

 

  • KMP 알고리즘이 KMP인 이유는 이를 만든 사람의 성이 Knuth, Morris, Prett이기 때문
  • 이렇게 알고리즘에는 발견한 사람의 성을 따서 이름을 붙이는 경우가 많음
  • 또 다른 예로, 유명한 비대칭 암호화 알고리즘 RSA는 이를 만든 사람의 이름이 Rivest, Shamir, Adleman
  • 사람들은 이렇게 사람 성이 들어간 알고리즘을 두 가지 형태로 부름
      1. 첫 번째는 성을 모두 쓰고, 이를 하이픈(-)으로 이어 붙인 것
      • 예를 들면, Knuth-Morris-Pratt
      • 이것을 긴 형태라고 부름
      1. 두 번째로 짧은 형태는 만든 사람의 성의 첫 글자만 따서 부르는 것
      • 예를 들면, KMP
  • 긴 형태의 알고리즘 이름이 주어졌을 때, 이를 짧은 형태로 바꾸어 출력하기
  • 입력
    • 입력은 한 줄로 이루어져 있고, 최대 100글자의 영어 알파벳 대문자, 소문자, 그리고 하이픈 ('-', 아스키코드 45)로만 이루어져 있음
    • 첫 번째 글자는 항상 대문자
    • 하이픈 뒤에는 반드시 대문자
    • 그 외의 모든 문자는 모두 소문자
  • 출력
    • 첫 줄에 짧은 형태 이름을 출력
  • 시간 제한: 1초
  • 메모리 제한: 128 MB

 

"""
입출력 예시)

(예제 입력 1) 
Knuth-Morris-Pratt -> KMP

(예제 입력 2)
Mirko-Slavko -> MS

(예제 입력 3)
Pasko-Patak -> PP
"""

 

 

## 의사코드 ##

# 하이픈으로 분리
# long = input().split('-')

# 첫 글자만 따오기
# for i in range(len(long)):
#     short += long[i][0]

 

 

 

 

long = input().split('-')
short = ''
for i in range(len(long)):
    short += long[i][0]
print(short)

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!