Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 k 연산 후에 가능한 최소 최대값을 찾는 프로그램

<시간/>

num이라는 숫자 목록과 다른 값 k가 있다고 가정합니다. 이제 목록의 모든 요소에서 1을 뺄 수 있는 연산을 고려해 보겠습니다. 이 작업을 k번 수행할 수 있습니다. 이러한 작업을 k 수행한 후 목록에서 가능한 최소 최대값을 찾아야 합니다.

따라서 입력이 nums =[3, 4, 6, 5] k =6과 같으면 출력은 3이 됩니다. 4를 한 번, 6을 세 번, 5를 두 번 줄여 [3,3,3, 3].

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • 역순으로 숫자 정렬
  • i :=0
  • curr :=nums[0]
  • k> 0일 때 수행
    • i
    • 나는 :=나는 + 1
  • k>=i이면
    • k :=k - 나는
    • curr :=curr - 1
  • 그렇지 않으면
    • 반환 통화
  • 반환 통화
  • 더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

    예시

    class Solution:
       def solve(self, nums, k):
          nums.sort(reverse=True)
          i = 0
          curr = nums[0]
          while k > 0:
             while i < len(nums) and nums[i] == curr:
                i += 1
             if k >= i:
                k -= i
                curr -= 1
             else:
                return curr
          return curr
    
    ob = Solution()
    nums = [3, 4, 6, 5]
    k = 6
    print(ob.solve(nums, k))

    입력

    [3, 4, 6, 5], 6

    출력

    3