728x90
처음에 정직하게 풀려고 했으나 계속 시간초과가 발생했다.
역시 사람이 머리를 써야 문제가 풀린다.
이 문제는 3가지로 상황을 나누어 풀어야한다.
1. 회문일 경우
-> 전체 길이 -1
1-2. 회문인데 전부 똑같은 문자열 일경우
-> -1
2. 회문이 아닐 경우
-> 전체 길이
코드 :
# 팰린드롬인지 확인
def palin(search) :
for i in range(len(search)//2) :
if search[i] != search[-(i+1)] :
return False
return True
# 전부 같은 문자열인지 확인
def same(search) :
for i in range(1,len(search)) :
if search[i] != search[0] : return False
return True
if __name__=="__main__" :
char = input()
# 회문일 경우
if palin(char) :
# 모두 같으면 -1 아니면 전체길이에서 -1
print(-1 if same(char) else len(char)-1)
# 회문이 아닐 경우
else :
print(len(char))
같은 문자열인 것은 same이라는 함수를 만들어 모든 문자가 처음 문자와 같은지 확인하는 역할을 수행했다.
palin이라는 함수는 팰린드롬 여부를 확인하는데 길이를 반으로 나누어 앞에 문자와 뒤에 문자가 같은지 확인한다.
참고 블로그 :
https://wantchicken.tistory.com/60
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[Python/BOJ] 백준 14391 종이조각 _비트마스킹 (0) | 2022.08.11 |
---|---|
[Python/BOJ] 백준 17398 통신망 분할_유니온파인드 (0) | 2022.08.11 |
[삼성SW역량][Python/BOJ] 백준 17143 낚시왕_구현 (0) | 2022.08.10 |
[Python/백준]12865번_평범한 배낭(DP, 냅색) (0) | 2022.08.06 |
[Python/백준]2136 개미 (0) | 2022.08.05 |