본문 바로가기
코테 준비/Stack

[LeetCode] 1006. Clumsy Factorial

by 헤이즐넛 좋아하는 개발자 2025. 1. 26.

I. Description


II. Code

class Solution:
    def clumsy(self, n: int) -> int:
        result = 0
        add_or_sub = 1
        for i in range(n, -1, -4):
            if i == 3:
                return (result + add_or_sub * 6)
            if i == 2:
                return (result + add_or_sub * 2)
            if i == 1:
                return (result + add_or_sub * 1)
            if i == 0:
                return result
            result += add_or_sub * (i * (i-1) // (i-2))
            result += (i-3)
            add_or_sub = -1

Result를 계산하며 i를 n에서부터 감소시킬 때 마지막은 0~3이 된다. 따라서 그 경우를 미리 고려해주었다.