[Python] 리트코드 238. Product of Array Except Self


[Python] 리트코드 238. Product of Array Except Self

문제 해석 리스트 nums = [1, 2, 3, 4]가 주어지고 자기 자신을 제외한 값을 곱한 리스트를 반환하라 => [24, 12, 8, 6] 문제 자체는 쉽지만 조건이 까다로웠다. * 나눗셉을 사용하지 않고, O(n)에 풀어야 한다. 즉 이중 for문은 사용하면 안 된다. 풀이 시간 초과가 나지 않도록 하는 풀이를 찾기 어려워서 정답을 찾아봤다. 찾아 봤는데도 이해가 쉽지는 않지만, 아이디어는 다음과 같다. 1) 초기 값을 1로 두고, 왼쪽 끝부터 곱한 리스트를 구한다. [1, 1*1, 1*1*2, 1*1*2*3] 2) 초기 값을 1로 두고, 오른쪽 끝부터 곱한 리스트를 구한다. [1*4*3*2, 1*4*3, 1*4, 1] 이렇게 두 리스트를 구하고 각각의 값을 곱하면, 자신을 제외한 곱을 구할 수 있다. 써놓고 보면 이해가 되지만.. 이런 아이디어를 어떻게 생각하지?외워야하나...ㅎ 앤드!! 리스트끼리 곱할때도 두 개의 리스트를 만들어서 곱하는 것이 아니라, 이미 만들어둔 re...



원문링크 : [Python] 리트코드 238. Product of Array Except Self