[백준] 2902번 - KMP는 왜 KMP일까? (파이썬)

2022. 9. 6. 16:04·🎲 알고리즘 공부/백준

[문제]

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

또 다른 예로, 유명한 비대칭 암호화 알고리즘 RSA는 이를 만든 사람의 이름이 Rivest, Shamir, Adleman이다.

사람들은 이렇게 사람 성이 들어간 알고리즘을 두 가지 형태로 부른다.

  • 첫 번째는 성을 모두 쓰고, 이를 하이픈(-)으로 이어 붙인 것이다. 예를 들면, Knuth-Morris-Pratt이다. 이것을 긴 형태라고 부른다.
  • 두 번째로 짧은 형태는 만든 사람의 성의 첫 글자만 따서 부르는 것이다. 예를 들면, KMP이다.

동혁이는 매일매일 자신이 한 일을 모두 메모장에 적어놓는다. 잠을 자기 전에, 오늘 하루 무엇을 했는지 되새겨 보는 것으로 하루를 마감한다.

하루는 이 메모를 보던 중, 지금까지 긴 형태와 짧은 형태를 섞어서 적어 놓은 것을 발견했다.

이렇게 긴 형태로 하루 일을 기록하다가는 메모장 가격이 부담되어 파산될 것이 뻔하기 때문에, 앞으로는 짧은 형태로 기록하려고 한다.

긴 형태의 알고리즘 이름이 주어졌을 때, 이를 짧은 형태로 바꾸어 출력하는 프로그램을 작성하시오.

 

입출력 예시

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

 

2902번: KMP는 왜 KMP일까?

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

www.acmicpc.net


🎨 풀이

💡 전체 코드

text = list(map(str,input().split('-')))
result = ''

for i in range(len(text)):
    result += text[i][0]

print(result)

> 핵심 : -를 기준으로 나눠담은 후, 각 앞자리만 더해준다.

 

 

 

🍦 코드 설명 (실행 순서대로 나열)

# main

text = list(map(str,input().split('-')))
result = ''

1. text를 입력받은 후, - 를 기준으로 나눠서 넣어준다.

 - ex) 입력 : Seoul-OW   /   결과 : text = ['Seoul','OW']  

2. result 변수를 만든다.

 

for i in range(len(text)):
    result += text[i][0]

3. text 리스트에 있는 값들 중 가장 첫번째 값만 result에 더해준다.

 - ex) text = ['Seoul','OW']   /  결과 : result = SO

 

print(result)

4. result를 출력한다.


끝~

⭐ 느낀점

> 이 문제는 그래도 규칙이 딱 적혀있어서 풀기에 좀 편했던 것 같다. 모든 문제가 이렇게 상세하게 규칙을 말해주지는 않으니까 좀 더 열심히! 많은 문제를 풀어봐야겠다잉~~~~

'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글

[백준] 9093번 - 단어 뒤집기 (파이썬)  (0) 2022.09.08
[백준] 2953번 - 나는 요리사다 (파이썬)  (0) 2022.09.07
[백준] 2455번 - 지능형 기차 (파이썬)  (0) 2022.09.05
[백준] 1032번 - 명령 프롬프트 (파이썬)  (0) 2022.09.04
[백준] 2490번 - 윷놀이 (파이썬)  (0) 2022.09.03
'🎲 알고리즘 공부/백준' 카테고리의 다른 글
  • [백준] 9093번 - 단어 뒤집기 (파이썬)
  • [백준] 2953번 - 나는 요리사다 (파이썬)
  • [백준] 2455번 - 지능형 기차 (파이썬)
  • [백준] 1032번 - 명령 프롬프트 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (267)
      • 📑 신입일기 (35)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 📘 독서 (0)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    컨텐더스
    충무로
    코린이
    폰켓몬
    50문답
    정보처리기사
    카카오
    연습문제
    파이썬
    찬양추천
    행렬덧셈
    스프링부트
    til
    프로그래머스
    codeup
    피보나치수
    코드업
    티스토리챌린지
    오버워치
    코민이
    백준
    BOJ
    오블완
    스프링 부트
    nodejs
    코테
    신입일기
    일기
    정처기
    6월 목표
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[백준] 2902번 - KMP는 왜 KMP일까? (파이썬)
상단으로

티스토리툴바