1 minute read

1442. Count Triplets That Can Form Two Arrays of Equal XOR (Medium)

xor의 inverse function은 xor임을 이용하는 풀이.

class Solution:
    def countTriplets(self, arr: List[int]) -> int:
        n = len(arr)
        if n < 2:
            return 0
        ans = 0
        xors = [0]
        for i in range(n):
            xors.append(xors[-1] ^ arr[i])
        for i in range(n-1):
            for k in range(i + 1, n):
                if xors[i] == xors[k + 1]:
                    ans += k - i
        return ans

931. Minimum Falling Path Sum (Medium)

DP를 이용한 풀이 및 주어진 matrix 값을 그대로 이용하는 방법. 처음에는 2차원 dict를 이용하여 구현했으나, JAVA에서 구현한것과 마찬가지로 Time limit exceeded가 떠서 다른 방식으로 구현함.

class Solution:
    def minFallingPathSum(self, matrix: List[List[int]]) -> int:
        row = matrix[0]
        
        m, n = len(matrix), len(matrix[0])
        
        for i in range(1, m):
            for j in range(n):
                
                if j == 0:
                    p1 = matrix[i-1][j]
                    p2 = matrix[i-1][min(n - 1, j + 1)]
                    p3 = p2
                elif j == n - 1:
                    p1 = matrix[i-1][j]
                    p2 = matrix[i-1][max(0, j - 1)]
                    p3 = p2
                else:
                    p1 = matrix[i-1][j-1]
                    p2 = matrix[i-1][j]
                    p3 = matrix[i-1][j+1]
                    
                matrix[i][j] += min(p1, p2, p3)
                
        return min(matrix[-1])

258. Missing Number (Easy)

[0, n] 의 숫자로 이루어진 배열에서 누락된 숫자를 찾는 문제, 배열의 총합이 $n * (n + 1) / 2$이 되어야함을 이용하여 쉽게 해결함.

class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        n = len(nums)
        total = n * (n + 1) // 2
        return total - sum(nums)