728x90

백준 1254 - 팰린드롬 만들기

시간 제한 2초, 메모리 제한 128MB

# 조건

  • 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다.
  • 규완이는 팰린드롬을 엄청나게 좋아한다.
  • 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다.
  • 동호는 규완이를 위한 깜짝 선물을 준비했다.
  • 동호는 규완이가 적어놓고 간 문자열 S에 0개 이상의 문자를 문자열 뒤에 추가해서 팰린드롬을 만들려고 한다.
  • 동호는 가능하면 가장 짧은 문자열을 만들려고 한다.
  • 동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력하는 프로그램을 작성하시오.

입력

  • 첫째 줄에 문자열 S가 주어진다.
  • S는 알파벳 소문자로만 이루어져 있고, 길이는 최대 50이다.

출력

  • 첫째 줄에 동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력한다.

# 접근 방법

  • 반복문을 이용하여 팰린드롬이 주어진 문자열 내에 존재하는지 확인하면 된다.
  • 핵심은 word[i:] == word[i:][::-1]이 참이되는지 확인하는 것이다.
    • 즉, abaab란 문자열이 존재할 때 i = 1인 경우 baab는 팰린드롬인게 확인디 되므로
    • 전체 문자열 길이 -1 + (i+1) = len(word) + i => 즉 0번쨰의 a 1개만 더 더해주면 팰린드롬이 완성되기 때문이다.
import sys  
sys.stdin = open('input.txt')  
input = sys.stdin.readline  

word = str(input())  

# 반복문을 통해 문자를 확인  
for i in range(len(word)):  
    # i번째로 시작한 문자열과 i번째로 시작한 문자를 뒤에서부터 확인한 문자열을 확인  
    # 같을 경우 i번째 이전에 문자가 다른 것으로 문자열 뒤에 추가해주면 된다.    
    if word[i:] == word[i:][::-1]:  
        print(len(word) + i)  
        break
728x90