Data Structure
1. Insert node in tail in Linked List
def insertNodeAtTail(head, data):
if head == None:
head = SinglyLinkedListNode(data)
else:
n = head
while n.next:
n = n.next
n.next = SinglyLinkedListNode(data)
return head
2. 특정 position 에 있는 node 를 삭제
def deleteNode(llist, position):
# Write your code here
n = llist
if position == 0: # head 를 삭제할 때
return llist.next
else:
for _ in range(position-1):
n = n.next
rem = n.next
n.next = rem.next
return llist
3. linked list 를 reverse 로 만들어서 출력하기
def reverse(llist):
# Write your code here
n = llist
rlist = [n.data]
new_llist = SinglyLinkedList()
while n.next:
n = n.next
rlist.insert(0, n.data)
for d in rlist:
new_llist.insert_node(d)
return new_llist.head
출력하는 함수는 이미 구현이 되어있다.
위처럼 for 문을 2번 사용하는 거 말고 다른 방법이 있을까?
def reverse(head):
if not head:
return None
prev = None
while head:
next_node = head.next
head.next = prev
prev = head
head = next_node
return prev
근데 너무 어렵다.
'백준 단계별 코딩 테스트' 카테고리의 다른 글
HackerRank : Balanced Bracket (0) | 2022.09.18 |
---|---|
HackerRank : Equal Stacks (0) | 2022.09.06 |
HackerRank prepare 문제 : Linked List 1 (0) | 2022.07.30 |
220722 : 1032, 1110 번 풀이 + HackerRank prepare 1문제 (0) | 2022.07.22 |
220714 : 1264, 2744, 23037 번 풀이 (0) | 2022.07.22 |