숫자 배열이 있고 또 다른 숫자 k가 있다고 가정하면 주어진 배열이 모든 쌍의 합이 k가 되도록 쌍으로 나눌 수 있는지 확인해야 합니다.
따라서 입력이 arr =[1, 2, 3, 4, 5, 6], k =7과 같으면 출력은 (2, 5), (1, 6)과 같은 쌍을 취할 수 있으므로 True가 됩니다. 및 (3, 4).
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n :=arr의 크기
- n이 홀수이면
- 거짓을 반환
- 낮음 :=0, 높음 :=n - 1
- 낮은 동안 <높은, do
- arr[low] + arr[high]가 k와 같지 않으면
- 거짓을 반환
- 낮음 :=낮음 + 1
- 높음 :=높음 - 1
- arr[low] + arr[high]가 k와 같지 않으면
- 참 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(arr, k): n = len(arr) if n % 2 == 1: return False low = 0 high = n - 1 while low < high: if arr[low] + arr[high] != k: return False low = low + 1 high = high - 1 return True arr = [1, 2, 3, 4, 5, 6] k = 7 print(solve(arr, k))
입력
[1, 2, 3, 4, 5, 6], 7
출력
True