[BOJ] 회문은 회문이니야

Minsu Han·2023년 3월 6일
0

알고리즘연습

목록 보기
92/105

코드

import sys
input = sys.stdin.readline

string = input().rstrip()
def isPelindrom(s):
    l = len(s)
    for i in range(l // 2):
        if s[i] != s[l-1-i]:
            return False
    return True

if isPelindrom(string):    # 펠린드롬인 경우
    # 문자열의 모든 문자가 같으면 -1 출력, 그렇지 않으면 답은 문자열 길이-1
    if len(set(list(string))) == 1:
        print(-1)
    else:
        print(len(string) - 1)
else:
    # 펠린드롬이 아니면 답은 문자열 길이와 같다
    print(len(string))

결과

image


풀이 방법

  • 문자열 관련 문제이다
  • 어렵게 생각할 필요 없이 다음의 3가지 경우로 답이 결정된다
  • 펠린드롬이면서 모든 문자가 같은 경우 답은 -1이다
  • 모든 문자가 같지는 않지만 펠린드롬인 경우 처음 또는 끝의 마지막 문자만 제거해도 가장 긴 답이 되므로 답은 (문자열 길이)-1 이다
  • 문자열이 펠린드롬이 아니면 그 자체로 가장 긴 답이므로 답은 (문자열 길이)이다

profile
기록하기

0개의 댓글