목차


두 수의 합이 주어진 수가 되는 경우 찾기

def maxOperations(self, nums: List[int], k: int) -> int:
    nums.sort()
    left, right = 0, len(nums) - 1
    result = 0
    while left < right:
        if nums[left] + nums[right] == k:
            result += 1
            left += 1
            right -= 1
        elif nums[left] + nums[right] < k:
            left += 1
        else:
            right -= 1
    return result

반대 경우의 수가 나왔을 때 초기화를 통한 처리 방법

def checkZeroOnes(self, s: str) -> bool:
    longestOne, longestZero = 0, 0
    currentOne, currentZero = 0, 0
    for ch in s:
        if ch == '1':
            currentOne += 1
            currentZero = 0
        else:
            currentZero += 1
            currentOne = 0
        longestOne = max(longestOne, currentOne)
        longestZero = max(longestZero, currentZero)
    return longestOne > longestZero

3d 입체를 2d로 투영할때의 면적 구하기

def projectionArea(self, grid: List[List[int]]) -> int:
    xy = sum(1 for row in grid for val in row if val)
    yz = sum(max(row) for row in grid)
    zx = sum(max(col) for col in zip(*grid))
    return xy + yz + zx

2024-04-28
다음 글: 5월 1주차 알고리즘 문제 → 카테고리로 돌아가기 ↩