728x90
난이도 : easy
리스트 nums 내의 strictly increasing이나 strictly decreasing하는 subarray 중, 가장 긴 subarray의 길이를 return하는 문제
class Solution:
def longestMonotonicSubarray(self, nums: List[int]) -> int:
n = len(nums)
a = [
len(nums[i:j])
for i in range(n)
for j in range(i+2, n+1)
if all(nums[k] < nums[k+1] for k in range(i, j-1))]
b = [
len(nums[i:j])
for i in range(n)
for j in range(i+2, n+1)
if all(nums[k] > nums[k+1] for k in range(i, j-1))]
return max(a+b) if len(a+b) > 0 else 1
a와 b라는 리스트 컴프리헨션을 제작.
a는 strictly increasing, b는 strictly decreasing한 case라는 조건을 충족하는 subarray 리스트의 길이를 리스트로 나타냄.
리스트 a와 리스트 b를 합한 값의 max를 return하되,
리스트 a + b가 0이라면(ex.2와 같은 case로 해당 사항이 하나도 없으면) 1을 return
Runtime : 167ms (5.83%)
Memory : 17.84MB (33.50%)
728x90
'코딩 공부 > Leetcode' 카테고리의 다른 글
[Python] 707. Design Linked List (0) | 2025.02.04 |
---|---|
[Python] 1800. Maximum Ascending Subarray Sum (0) | 2025.02.04 |
[Python] 1752. Check if Array Is Sorted and Rotated (0) | 2025.02.03 |
[Python] 448. Find All Numbers Disappeared in an Array (0) | 2025.02.02 |
[Python] 414. Third Maximum Number (0) | 2025.02.01 |