알고리즘

# [알고리즘] 연결리스트로 구현한 펠린드롬

ForrestPark 2024. 12. 19. 21:02

📌 본 포스팅은 연결리스트로 구현한 펠린드롬 에 대한 내용을 다룹니다.


1.연결리스트 펠린드롬

⓵ 연결리스트를 사용하지 않았을 때

import sys 
a = sys.stdin.readline().rstrip()
reverse_a="".join(list(reversed(a)))
print(True if a==reverse_a else False)

⓶ 연결리스트 를 사용하여 펠린드롬인지 확인 할때

def isPalindrome(ln):
    from structures import F
    F.b("\n펠린드롬 인지 확인합니다")
    arr = []
    head = ln.head
    print(f"head :{head} ")

    if not head:
        print("아무 것도 없으므로 펠린드롬입니다")
        return True

    node = head
    F.b("LL 순회하며 원소를 리스트에 저장")
    while node:
        arr.append(node.val)
        node = node.next
        print(arr,node)

    F.b("리스트 양끝 pop 하면서 비교")
    while len(arr) > 1:
        first = arr.pop(0)
        last = arr.pop()
        F.y(f"? First {first} == Last {last}")
        if first != last:
            F.r(f"First {first} != Last {last} 다름")
            return False

    return True

assert isPalindrome(ln)

🫡 실행결과

✅ [결론]

[⭐️] 알고리즘 공부할때는 파이썬 내장함수도 모조리 직접구현해서 문제를 풀도록 하자!