지난 공부기록/알고리즘 풀이

Python - Algorithm #49

hkl22 2024. 9. 9. 09:29

Python Algorithm

LeetCode

2119. A Number After a Double Reversal

  • Reversing an integer means to reverse all its digits.
    • For example, reversing 2021 gives 1202. Reversing 12300 gives 321 as the leading zeros are not retained.
  • Given an integer num, reverse num to get reversed1, then reverse reversed1 to get reversed2. Return true if reversed2 equals num. Otherwise return false.
  • Constraints
    • 0 num 10⁶
class Solution:
    def isSameAfterReversals(self, num: int) -> bool:
        reversed1 = int(str(num)[::-1])
        # reversed_num을 다시 뒤집고 num과 비교해 보기
        reversed2 = int(str(reversed1)[::-1])
        return reversed1 == reversed2:
class Solution:
    def isSameAfterReversals(self, num: int) -> bool:
        reversed1 = int("".join(reversed(str(num))))
        reversed2 = int("".join(reversed(str(reversed1))))
        if num == reversed2:
            return True
        return False

1800. Maximum Ascending Subarray Sum

  • Given an array of positive integers [nums], return the maximum possible sum of an ascending subarray in [nums].
  • A subarray is defined as a contiguous sequence of numbers in an array.
  • A subarray [numsₗ, numsₗ₊₁, ..., numsᵣ₋₁, nums] is ascending if for all i where l i < r, nums < numsᵢ₊₁. Note that a subarray of size 1 is ascending.
  • Constraints
    • 1 nums.length 100
    • 1 nums[i] 100
class Solution:
    def maxAscendingSum(self, nums: List[int]) -> int:
        # 이전 수보다 증가하고 있는지를 체크
        # 계속 증가하고 있으면 현재의 누적합에 숫자 더해주기
        # 만약 감소한다면 현재의 누적합 초기화
        # answer와 현재 누적합 비교해서 더 큰 값을 answer로 지정
        prev = 0
        cur_sum = 0
        answer = 0
        for num in nums:
            if num > prev:
                # 현재 누적합에 숫자 더해줌
                # 누적합과 answer 비교, 더 큰 값을 지정
                cur_sum += num
            else:
                # cur_sum을 현재 숫자로 초기화
                cur_sum = num
            answer = max(answer, cur_sum)
            prev = num
        return answer
class Solution:
    def maxAscendingSum(self, nums: List[int]) -> int:
        answer = nums[0]
        sum_ = nums[0]
        for i in range(1, len(nums)):
            if nums[i-1] < nums[i]:
                sum_ += nums[i]
            else:
                sum_ = nums[i]
            answer = max(answer, sum_)
        return answer

https://leetcode.com/problems/a-number-after-a-double-reversal/

https://leetcode.com/problems/maximum-ascending-subarray-sum/

'지난 공부기록 > 알고리즘 풀이' 카테고리의 다른 글

Python - Algorithm #51  (0) 2024.09.12
Python - Algorithm #50  (0) 2024.09.10
Python - Algorithm #48  (0) 2024.09.06
Python - Algorithm #47  (0) 2024.09.05
Python - Algorithm #46  (0) 2024.09.04