CodingTest/Baekjoon

[baekjoon] 백준 15927번(파이썬): 회문은 회문아니야!!

JunJangE 2022. 5. 16. 01:44

문제

 

15927번: 회문은 회문아니야!!

팰린드롬이란 앞으로 읽으나 뒤로 읽으나 같은 문자열을 말한다. 팰린드롬의 예시로 POP, ABBA 등이 있고, 팰린드롬이 아닌 것의 예시로 ABCA, PALINDROME 등이 있다. 같은 의미를 가지는 여러 단어들을

www.acmicpc.net

알고리즘

- 문자열 길이가 n일 때와 n-1일 때 회문이 되는지 확인한다.

- 문자열의 길이가 n일 때 회문이면서, n-1일 때도 회문이라면 그 문자열은 하나의 문자로 연속되어 있는 문자열인 회문이다.

- 문자열이 짝수인지 홀수인지, 길이가 n일 때인지 n-1일 때인지에 따라서 왼쪽 문자열과 오른쪽 문자열을 나눈다.

- 나눈 문자열이 회문인지 판단하여 문제를 수행한다. 

코드

import sys


# 회문인지 판단
def solution(n):
    # 문자열이 짝수인지 홀수인지에 따라서 왼쪽 문자열과 오른쪽 문자열을 나눔.
    if len(word) % 2 == 0:
        left = word[0: len(word)//2 - n]
    else:
        left = word[0: len(word)//2 + 1 - n]

    right = word[len(word)//2:len(word) - n]

    # 왼쪽 문자열과 오른쪽 문자열이 똑같지 않으면 회문이 아님
    if left != right[::-1]:
        return True
    return False


word = list(map(str, sys.stdin.readline().strip()))

# 길이 n이 회문인지 확인
if solution(0):
    print(len(word))

# 길이 n-1이 회문인지 확인
elif solution(1):
    print(len(word) - 1)

# 회문!!!
else:
    print(-1)

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com