취준/코테일지

[LeetCode] 19. Remove Nth Node From End of List

만듀 2021. 1. 18. 21:56

링크드리스트에 관한 문제이다.

어렵지 않은 문제이지만 파이썬으로 링크드 리스트를 사용해 보는 것은 처음이어서 생소했다.

릿코드는 몬가 알고리즘의 정석 같은 문제들이 많은 것 같다.

정석대로 풀면 풀리는 경우가 많아서 몬가 행-복(?)하다. 미디엄이라서 그른가...

하지만 나는 코린이기 때문에 더욱 더 깔끔한 코드를 만들기 위해 노력해야한다!!!

런타임 맨날 나 뒤쳐져,,, 나도 상위 10퍼 런타임...

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
import copy
class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        num=1
        node=copy.deepcopy(head)        
        while(node.next!=None):
            node=node.next
            num+=1
        #print("num:",num)
        #if num==1:
            #return None
        if num-n==0:
            head=head.next
        else:
            ans=remove_elem(head,num-n)
        #print(head)
        return head
def remove_elem(node,num):
    cnt=0
    while(cnt<num-1):
        node=node.next
        cnt+=1
    elem=copy.deepcopy(node)
    elem=elem.next
    #print(elem)
    node.next=elem.next
    #print(node)
    return node
        

 

 

'취준 > 코테일지' 카테고리의 다른 글

1463번: 1로 만들기  (0) 2021.01.26
13904번: 과제  (0) 2021.01.12
2293번: 동전 1  (0) 2021.01.08
16206번: 롤케이크  (0) 2021.01.07
17281번: ⚾야구  (0) 2021.01.05