Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 A에서 B의 최소 k개 요소보다 작은 요소 개수 찾기

두 개의 숫자 리스트 AB, 그리고 값 k가 주어졌을 때, A의 요소 중 B의 최소 k개 요소보다 엄격하게 작은 요소의 개수를 구하는 문제입니다.

예를 들어 입력이 A = [6, -2, 100, 11], B = [33, 6, 30, 8, 14], k = 3이라면 결과는 3이 됩니다. 그 이유는 -2, 6, 11이 각각 B의 최소 3개 요소보다 작기 때문입니다.

해결 접근 방법

이 문제는 다음 단계를 통해 해결할 수 있습니다.

  • k가 0이면 조건이 자동으로 만족되므로 A의 크기를 그대로 반환합니다.
  • B를 내림차순으로 정렬합니다.
  • 카운터 변수 ct를 0으로 초기화합니다.
  • A의 각 요소 i에 대해, i가 B[k-1]보다 작으면 ct를 1 증가시킵니다.
  • 최종적으로 ct를 반환합니다.

B를 내림차순으로 정렬하면 B[k-1]은 B에서 k번째로 큰 값이 됩니다. 따라서 어떤 요소가 B[k-1]보다 작다면, 그 요소는 자동으로 B의 상위 k개 요소 전부보다 작다는 의미이므로 조건을 만족하게 됩니다. 덕분에 각 요소마다 일일이 비교하지 않고도 한 번의 비교만으로 판단할 수 있어 효율적입니다.

예제 코드

class Solution:
    def solve(self, A, B, k):
        if k == 0:
            return len(A)
        B.sort(reverse=True)
        ct = 0
        for i in A:
            if i < B[k - 1]:
                ct += 1
        return ct

ob = Solution()
A = [6, -2, 100, 11]
B = [33, 6, 30, 8, 14]
k = 3
print(ob.solve(A, B, k))

입력

[6, -2, 100, 11], [33, 6, 30, 8, 14], 3

출력

3