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

Python을 사용하여 K 제거 후 고유 정수의 최소 수를 찾는 프로그램

<시간/>

정수만 저장되는 num이라는 배열이 있다고 가정합니다. 숫자 k가 있는 경우. 정확히 k개의 요소를 제거한 후 최소한의 고유한 요소를 찾아야 합니다.

따라서 입력이 nums =[5,4,2,2,4,4,3], k =3과 같으면 출력은 2가 됩니다. 왜냐하면 5와 3, 그리고 2 중 하나를 제거하면 또는 4 중 하나를 선택하면 2와 4만 남게 됩니다.

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

  • 사전:=새 지도

  • 숫자의 각 숫자에 대해 수행

    • num이 사전에 없으면

      • 사전[숫자]:=1

    • 그렇지 않으면

      • 사전[숫자] :=사전[숫자] + 1

  • count:=사전의 크기

  • 사전의 모든 값의 정렬된 순서로 각 빈도에 대해 수행

    • k :=k - 주파수

    • k <0이면

      • 반환 횟수

    • 그렇지 않으면

      • 개수 :=개수 - 1

  • 반환 횟수

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

def solve(nums, k):
   dictionary={}
   for num in nums:
      if num not in dictionary:
         dictionary[num]=1
      else:
         dictionary[num]+=1
   count=len(dictionary)
   for frequency in sorted(dictionary.values()):
      k-=frequency
      if(k<0):
         return count
      else:
         count-=1
   return count
nums = [5,4,2,2,4,4,3]
k = 3
print(solve(nums, k))

입력

[5,4,2,2,4,4,3], 3

출력

2