[Q. 13] 팰린드롬 연결 리스트

2023. 3. 21. 15:06·코딩테스트/알고리즘
연결 리스트가 팰린드롬 구조인지 판별하라.

 

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next

 

위의 코드가 문제에서 제시한 연결 리스트이다. val 은 현재 노드의 값, next는 다음 노드를 가리키는 것이다.

먼저 연결 리스트를 팰린드롬인지 확인하기 위해서는 자료형을 변경해야한다. 파이썬에는 deque라는 자료구조가 있다. deque는 리스트와 같지만 append와 pop을 리스트 마지막이 아닌 처음에서도 할 수 있다는 특징이 있다.

 

먼저, 해당 연결 리스트를 deque 자료형으로 변경한다.

queue = deque()

while head is not None:
    queue.append(head.val)
    head = head.next

 

그 다음은, dequeue의 처음과 마지막 값을 뽑아 같은지 비교하며 다를 경우 False 값을 return 한다.

while len(queue) > 1:
    if queue.pop() != queue.popleft():
        return False

 

while 조건은 큐가 홀수 길이 일 수도 있으므로 len(queue) > 1로 설정하였다.

 

전체 코드는 다음과 같다.

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def isPalindrome(self, head: Optional[ListNode]) -> bool:

        queue = deque()

        while head is not None:
            queue.append(head.val)
            head = head.next

        while len(queue) > 1:
            if queue.pop() != queue.popleft():
                return False

        return True
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 > 알고리즘' 카테고리의 다른 글

[Q. 15] 역순 연결 리스트  (0) 2023.03.21
[Q. 14] 두 정렬 리스트의 병합  (0) 2023.03.21
[Q. 12] 주식을 사고팔기 가장 좋은 시점  (0) 2023.03.21
[Q. 11] 자신을 제외한 배열의 곱  (0) 2023.03.21
[Q. 10] 배열 파티션 1  (0) 2023.03.20
'코딩테스트/알고리즘' 카테고리의 다른 글
  • [Q. 15] 역순 연결 리스트
  • [Q. 14] 두 정렬 리스트의 병합
  • [Q. 12] 주식을 사고팔기 가장 좋은 시점
  • [Q. 11] 자신을 제외한 배열의 곱
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    mapstruct
    OpenAI API
    쿠버네티스
    Entity
    백준
    MSA
    클러스터
    예외
    티스토리챌린지
    REST API
    오블완
    스프링 부트
    클론코딩
    spring boot
    chat GPT
    react
    리액트
    스프링부트
    Java
    인스타그램
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[Q. 13] 팰린드롬 연결 리스트
상단으로

티스토리툴바