11. 자신을 제외한 배열의 곱
https://leetcode.com/problems/product-of-array-except-self/
📌문제
배열을 입력받아 output[i]가 자신을 제외한 나머지 모든 요소의 곱셈 결과가 되도록 출력하라
- 예제1
📝입력
nums = [1,2,3,4]
💻출력
[24,12,8,6]
- 예제2
📝입력
nums = [-1,1,0,-3,3]
💻출력
[0,0,9,0,0]
📌풀이
1ms, 50.6mb
public int[] productExceptSelf(int[] nums) {
int[] answer = new int[nums.length];
answer[0] = 1;
// 왼쪽 곱셈
for(int i = 1; i < nums.length; i++){
answer[i] = answer[i-1] * nums[i-1];
}
// 오른족 곱셈
int n = 1;
for(int i = nums.length -1; i>=0; i--){
answer[i] *= n;
n *= nums[i];
}
return answer;
}
- 조건은 나눗셈을 하지 않고 O(n)에 풀이해야했음
- 나눗셈을 하지 않는 다는 것은 자기 자신을 제외한 곱을 구하는 것.
ex. [1 2 3 4] 1을 기준으로 했을 때 2X3X4 = 24 를 구하라는 것
- 왼쪽 곱셈 부분은 3을 기준으로 했을 때 '1X2' 즉 자신의 왼쪽에 해당하는 곱셈을 구한 것
따라서 오른 쪽 곱셈 부분은 3을 기준으로 자신의 오른쪽 '4' 자신의 오른쪽에 해당하는 곱셈을 구한 것
- 이 왼쪽 곱셈과 오른쪽 곱셉을 곱해주면 자신을 제외한 곱의 값을 구할 수 있음
'Algorithm > PTUStudy' 카테고리의 다른 글
4주차. 문자열 반복 (0) | 2023.01.30 |
---|---|
4주차. 배열(주식을 사고팔기 가장 좋은 시점) (0) | 2023.01.30 |
4주차. 배열(배열파티션1) (0) | 2023.01.18 |
3주차. 더하기 사이클 (0) | 2023.01.16 |
3주차. 소수찾기 (0) | 2023.01.16 |