class Solution:
def maximumTop(self, nums: List[int], k: int) -> int:
if len(nums) == 1 and k & 1: return -1
if k == 0: return nums[0]
if len(nums) + 1 <= k: return max(nums)
h = []
idx = 0
maxNum = 0
while k > 1 and idx < len(nums):
maxNum= max(nums[idx], maxNum)
idx += 1
k -= 1
if maxNum != 0:
if idx < len(nums) - 1:
return max(maxNum, nums[idx+1])
return maxNum
return nums[1]
문제 풀이
- 예외 1번
nums의 길이가 1이고 k가 1이면 무조건 빈 pile 밖에 못만든다.
- 예외 2번
k가 0이면 무조건 첫번째 인자를 리턴해야한다.
- 예외 3번
k가 nums의 길이보다 1크면 무조건 배열 중 가장 큰 수를 맨 앞에 위치하게 할 수 있다.
- 그 외의 경우는 k가 1이 될때까지 remove를 하면서 가장 큰 수를 저장하면서 k가 1일때 배열에 남은 수 1개 또는 없다면 저장한 가장 큰 수를 리턴하고 남은 수가 2개 이상이면 저장한 가장 큰 수 혹은 idx +1 번째 수중 큰 수를 리턴한다.
- 그렇지 않은 경우에는 nums[1]를 리턴한다.