[BOJ-8892] 팰린드롬 (Python)

yuseon Lim·2021년 7월 6일
0

Problem Solving

목록 보기
28/37
post-thumbnail

🤒 문제

BOJ-8892 팰린드롬

💊 풀이

풀긴 풀었는데, 찝찝한 기분이다.
BOJ-10174 팰린드롬 처럼 투포인터를 이용했는데, 테스트케이스가 여러개니 투포인터를 두 번 썼고, 앞+뒤/뒤+앞 을 다 검사해야하니 펠린드롬을 두번 판단 하도록 했다.

속도도 그렇게 나쁘지는 않으나,, 이게 최선인가 싶은 생각이 자꾸만 들어서, 친구랑 하는 스터디에 이슈를 오픈 해 놓았다. 다시 풀어봐야지.

쨌든! 완성된 소스코드는 아래에!

✨ 소스코드

import sys
from typing import List

def is_palindrome(case: List):
    front = 0
    back = len(case) - 1

    while(front < back):
        if case[front] is not case[back]:
            return False
        front += 1
        back -= 1
    return True

def find_palindrome(words: List):
    if len(words) < 2:
        return '0'

    front = 0
    back = 1
    while(front < back and front < len(words) - 1):
        tmp_1 = words[front] + words[back]
        tmp_2 = words[back] + words[front]

        if is_palindrome(tmp_1):
            return tmp_1
        elif is_palindrome(tmp_2):
            return tmp_2
        else:
            back += 1

        if back == len(words):
            front += 1
            back = front + 1
    return '0'

T = int(input())
for _ in range(T):
    words = []
    k = int(input())
    for _ in range(k):
        words.append(sys.stdin.readline().strip())
    print(find_palindrome(words))

profile
🔥https://devyuseon.github.io/ 로 이사중 입니다!!!!!🔥

0개의 댓글