1. 문제 출처
https://www.acmicpc.net/problem/1254
2. 풀이
파이썬의 slice 기능을 이용하면 간단하게 해결할 수 있다.
s = input()
# 전체 문자열을 역순으로 한 것과 문자열이 일치하면 이미 팰린드롬 문자열 이므로
# 문자열의 길이를 출력한다.
if s == s[::-1]:
print(len(s))
# 아닌 경우
else:
# 최악의 경우의 수는 마지막 문자를 기준으로 앞뒤를 같게 하는 경우 이므로
# 최대 문자열의 전체 길이 빼기 1 만큼 반복해준다.
for n in range(len(s)-1):
# 파이썬 리스트에서 인덱스를 음수로 사용할 수 있는데 이 경우
# [-N....-3,-2,-1] 와 같이 된다.
# s[n-len(s)::-1] 와 같이 쓰면 n-len(s) 부터 -len(s) 까지의 값을 가지고 온다.
temp = s+s[n-len(s)::-1]
# 전체 문자열을 역순으로 한 것과 문자열이 일치하면 팰린드롬 문자열 이므로
# 문자열의 길이를 출력한다.
if temp == temp[::-1]:
print(len(temp))
break
'알고리즘' 카테고리의 다른 글
1439-백준-뒤집기 (0) | 2023.02.13 |
---|---|
2618- 백준 - 경찰차 (0) | 2023.02.10 |
9996-백준-한국이 그리울 땐 서버에 접속하지 (0) | 2023.02.08 |
9536-백준-여우는 어떻게 울지? (0) | 2023.02.06 |
백준-1141-접두사 (0) | 2023.02.04 |