정수를 포함하는 배열 "input_list"가 제공된다고 가정합니다. 우리에게 주어진 문제는 주어진 배열을 두 개의 반으로 나눌 수 있는지 확인하는 것입니다. 여기서 두 반의 합은 숫자 n과 같습니다. 번호 n은 미리 제공됩니다.
따라서 입력이 input_list=[9,2,5,6], n =0과 같으면 출력은 "가능"이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- list_total :=input_list 값의 합
- (list_total - n) mod 2가 1과 같으면
- "불가능" 반환
- val :=(list_total - n) / 2
- temp_sum :=0;
- 0에서 input_list의 크기 사이에 있는 i에 대해
- temp_sum :=temp_sum + input_list[i]
- temp_sum이 val과 같으면
- "가능" 반환
- "불가능" 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(input_list,n): list_total = sum(input_list) if (list_total - n) % 2 == 1: return "Not Possible" val = (list_total - n) / 2 temp_sum = 0; for i in range (0,len(input_list)): temp_sum += input_list[i] if (temp_sum == val): return "Possible" return "Not Possible" input_list= [9,2,5,6] n = 0 print(solve(input_list, n))
입력
[9,2,5,6], 0
출력
Possible