2202. Maximize the Topmost Element After K Moves

엄강우·2022년 5월 11일
0
post-thumbnail
post-custom-banner

문제

class Solution:
    def maximumTop(self, nums: List[int], k: int) -> int:
        if len(nums) == 1 and k & 1: return -1   # 1번 예외
        if k == 0: return nums[0]                # 2번 예외
        if len(nums) + 1 <= k: return max(nums)  # 3번 예외
            
        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. 예외 1번
    nums의 길이가 1이고 k가 1이면 무조건 빈 pile 밖에 못만든다.
  2. 예외 2번
    k가 0이면 무조건 첫번째 인자를 리턴해야한다.
  3. 예외 3번
    k가 nums의 길이보다 1크면 무조건 배열 중 가장 큰 수를 맨 앞에 위치하게 할 수 있다.
  4. 그 외의 경우는 k가 1이 될때까지 remove를 하면서 가장 큰 수를 저장하면서 k가 1일때 배열에 남은 수 1개 또는 없다면 저장한 가장 큰 수를 리턴하고 남은 수가 2개 이상이면 저장한 가장 큰 수 혹은 idx +1 번째 수중 큰 수를 리턴한다.
  5. 그렇지 않은 경우에는 nums[1]를 리턴한다.
profile
안녕하세요 프론트엔드 개발자를 꿈꾸는 엄강우입니다.
post-custom-banner

0개의 댓글