From f8d5d9bed3e61177a00932f32a564007301586d6 Mon Sep 17 00:00:00 2001 From: rimogsu Date: Thu, 14 May 2026 22:16:36 +0900 Subject: [PATCH] 14 --- .../3912. Valid Elements in an Array.py" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "leetcode3/\353\263\200\354\247\200\355\230\221/3912. Valid Elements in an Array.py" diff --git "a/leetcode3/\353\263\200\354\247\200\355\230\221/3912. Valid Elements in an Array.py" "b/leetcode3/\353\263\200\354\247\200\355\230\221/3912. Valid Elements in an Array.py" new file mode 100644 index 00000000..2db23e0c --- /dev/null +++ "b/leetcode3/\353\263\200\354\247\200\355\230\221/3912. Valid Elements in an Array.py" @@ -0,0 +1,40 @@ + +''' +1. 아이디어 : + 왼쪽 오른쪽 최대 구하고 비교 +2. 시간복잡도 : + O(n^2) +3. 자료구조/알고리즘 : +''' +class Solution: + def findValidElements(self, nums: list[int]) -> list[int]: + left = [0] * len(nums) + right = [0] * len(nums) + + _max = 0 + for i in range(len(nums)): + _max = max(nums[i], _max) + left[i] = _max + + _max = 0 + for i in range(len(nums)-1, -1, -1): + _max = max(nums[i], _max) + right[i] = _max + + print(left, right) + + ans = [] + for i in range(len(nums)-1): + if i == 0: + ans.append(nums[i]) + continue + + # if i != 0 and i == len(nums) - 1: + # ans.append(nums[i]) + + if max(left[:i]) < nums[i] or max(right[i+1:]) < nums[i]: + ans.append(nums[i]) + + # if len(nums) != 1: + ans.append(nums[len(nums)-1]) + return ans \ No newline at end of file