Data Structure & Algorithm
[자료구조와 알고리즘] 10강 실습(1) | 양방향 연결 리스트 역방향 순회
Boyaa
2023. 2. 21. 21:31
강의
[프로그래머스] 어서와! 자료구조와 알고리즘은 처음이지? - Python
문제
제 10 강에서 소개된 추상적 자료구조 DoublyLinkedList 에 대하여, 또한 강의 내용에서 언급한 reverse() 메서드를 구현하세요.
이 reverse() 메서드는 양방향 연결 리스트를 끝에서부터 시작해서 맨 앞에 도달할 때까지 (tail 방향에서 head 방향으로) 순회하면서, 방문하게 되는 node 에 들어 있는 data item 을 순회 순서에 따라 리스트에 담아 리턴합니다.
예를 들어, DoublyLinkedList L 에 들어 있는 노드들이 43 -> 85 -> 62 라면, 올바른 리턴 값은 [62, 85, 43] 입니다.
이 규칙을 적용하면, 빈 연결 리스트에 대한 역방향 순회 결과로 reverse() 메서드라 리턴해야 할 올바른 결과는 [] 입니다.
💬 요구 사항
- dummy head, dummy tail을 갖는 양방향 연결 리스트를 tail에서부터 순회해서 리스트로 리턴
풀이
내 풀이 | dummy head를 가지는 경우
def reverse(self):
result = []
curr = self.tail
while curr.prev.prev :
curr = curr.prev
result.append(curr.data)
return result
💬 Comment
이전과 다르게 surr.prev.prev로 조건이 붙는 이유는 dummy head가 있기 때문이다.