문제요약
나의 코드 및 설명
s = list(input())
r_s = s[::-1]
if s == r_s:
print(len(s))
else:
min_ans = len(s)*2
ans = len(s)*2
for i in range(len(r_s)):
#뒤집은 문자열을 하나하나 떼어서 붙여본다.
check=s+r_s[i:len(r_s)]
#만약 뒤집은 문자열이 오리지날과 일치한다면 팰린드롬이다.
if check == check[::-1]:
ans = len(check)
if min_ans > ans:
min_ans = ans
print(min_ans)
피드백
문자열 문제 연습하다가 만난 문제. 처음에는 어떻게 문제를 풀까 10분 이상 고민한 것 같다. 그러다가 가장 긴 팰린드롬 문자열이 나오게 될 경우는 주어진 문자열을 완전히 뒤집어서 붙인 경우일 테고, 가장 짧은 팰린드롬 문자열은 맨 앞의 문자를 맨 뒤에 붙인 경우일 것이라고 생각을 했고, 정답 판정을 받을 수 있었다.
'Baekjoon' 카테고리의 다른 글
[백준] 1251 단어 나누기 (실버5) / 문자열 (0) | 2023.04.28 |
---|---|
[백준] 1120 문자열 (실버5) / 문자열 (0) | 2023.04.27 |
[백준] 7785 회사에 있는 사람 (실버5) / 시간초과 해결, 리스트, 딕셔너리 시간복잡도 (0) | 2023.04.27 |
[백준] 1543 문서 검색 (실버4) / 문자열 (0) | 2023.04.27 |
[백준] 1316 그룹 단어 체커 (실버5) (0) | 2023.03.28 |