세 개의 숫자 i, j, k와 또 다른 숫자 n이 있다고 가정합니다. i+j+k가 n과 같지 않은 모든 삼중항(i, j, k)의 목록을 찾아야 합니다. 목록 이해 전략을 사용하여 이 문제를 해결해야 합니다.
따라서 입력이 i =1, j =1, z =2 및 n =3과 같으면 출력은 [[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 2] ]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
arr =x+y+z가 다음과 같은 경우 0~i 범위의 모든 x, 0~j 범위의 모든 y 및 0~k 범위의 모든 z에 대한 삼중항 배열 [x, y, z] n과 동일하지 않음
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(i, j, k, n): arr = [[x, y, z] for x in range(i+1) for y in range(j+1) for z in range(k+1) if x+y+z != n] return arr i = 1 j = 1 k = 2 n = 3 print(solve(i, j, k, n))
입력
1, 1, 2, 3
출력
[[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 2]]