본문 바로가기
leetcode - contest

weekly-contest-321

by skyepodium 2022. 12. 4.

개요

날짜 2022.11.27 일 11:30 ~ 13:00

링크: https://leetcode.com/contest/weekly-contest-321/

결과 3 / 4

1. Find the Pivot Integer

링크: https://leetcode.com/contest/weekly-contest-321/problems/find-the-pivot-integer/

누적합 사용

class Solution:
    def pivotInteger(self, n: int) -> int:
        d = [0] * (n+1)

        for i in range(1, n+1):
            d[i] = d[i-1] + i

        res = -1
        for i in range(1, n+1):
            front = d[i]
            back = d[n] - d[i] + i
            if front == back:
                res = i

        return res

 

2. Append Characters to String to Make Subsequence

링크: https://leetcode.com/contest/weekly-contest-321/problems/append-characters-to-string-to-make-subsequence/

스택 사용했다.뭔가 제대로 이해하고 풀지는 않았는데, 통과해서 넘어갔다.

class Solution:
    def appendCharacters(self, s: str, t: str) -> int:
        top = 0
        for c in s:
            if c == t[top]:
                top += 1
            if top == len(t):
                return 0
        return len(t[top:])

 

3. Remove Nodes From Linked List

링크: https://leetcode.com/contest/weekly-contest-321/problems/remove-nodes-from-linked-list/

전형적인 스택 문제인데, 배열이 아닌 링크드 리스트로 주어졌다.

급해서, 비효율적으로 작성함

class Solution:
    def removeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]:
        # 1. node
        node = head
        st = []

        # 2. loop
        while node:
            while st and node.val > st[-1].val:
                st.pop()

            st.append(ListNode(node.val, None))
            node = node.next

        cur = res = ListNode(0, None)

        for v in st:
            res.next = v
            res = res.next

        return cur.next

 

4. Count Subarrays With Median K

링크: https://leetcode.com/contest/weekly-contest-321/problems/count-subarrays-with-median-k/

못풀었다.

'leetcode - contest' 카테고리의 다른 글

weekly-contest-323  (0) 2022.12.11
weekly-contest-322  (0) 2022.12.04