[Array & Hash] Product of Array Except Self

김예인·2023년 11월 22일
0

알고리즘 문제풀이

목록 보기
9/12

문제

정수 배열 nums가 주어졌을 때, answer[i] 가 nums[i] 를 제외한 nums의 모든 요소들의 곱과 같도록 하는 배열 answer를 반환하십시오. nums의 어떤 접두사(prefix)나 접미사(suffix)의 곱은 32비트 정수 범위에 들어갈 것임이 보장됩니다.
** 이 알고리즘은 O(n) 시간에 실행되어야 하며, 나눗셈 연산을 사용하지 않아야 합니다.

Example 1:

Input: nums = [1,2,3,4]
Output: [24,12,8,6]
Example 2:

Input: nums = [-1,1,0,-3,3]
Output: [0,0,9,0,0]


나의 풀이

public int[] productExceptSelf(int[] nums) {

        // 결과로 반환할 배열 초기화
        int[] answer = new int[nums.length];

        // prefix: 왼쪽 요소들의 누적 곱 계산
        answer[0] = 1;
        for (int i = 1; i < nums.length; i++) {
            answer[i] = nums[i - 1] * answer[i - 1];
        }

        // suffix: 오른쪽 요소들의 누적 곱 계산하며 결과 배열에 곱해
        int right = 1;
        for (int i = nums.length-1; i >= 0; i--) {
            answer[i] *= right;
            right *= nums[i];
        }

        return answer;
    }
profile
백엔드 개발자 김예인입니다.

0개의 댓글