์๋ฐ ์ฝ๋
import java.util.*;
class Solution {
public int[] productExceptSelf(int[] nums) {
int result = 1;
int zeroIdx= -1;
int[] ans = new int[nums.length];
for(int i=0;i<nums.length;i++){
if(nums[i]==0){
if(zeroIdx==-1){
zeroIdx = i;
}else{
return ans;
}
}else{
result*=nums[i];
}
}
if(zeroIdx!=-1){
ans[zeroIdx] = result;
}else{
for(int i=0;i<nums.length;i++){
ans[i] = result/nums[i];
}
}
return ans;
}
}
ํ์ด์ฌ ์ฝ๋
class Solution(object):
def productExceptSelf(self, nums):
result = 1
zero = []
# for๋ฌธ ํ์์ผ๋ก nums์ 0์ด ์กด์ฌํ๋์ง ํ์ธ & 0์ ์ ์ธํ ๋ชจ๋ ์์์ ๊ณฑ ๊ณ์ฐ
for i in range(len(nums)):
num = nums[i]
if num == 0:
zero.append(i)
else:
result *= num
# nums ์ zero๊ฐ 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ, ๋ชจ๋ ๊ฐ์ 0์ด ๋๋ค.
if len(zero)>=2:
return [0]*len(nums)
# nums์ zero๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ, zero์ธ ์์ ์์น๋ฅผ ์ ์ธํ ๋ค๋ฅธ ๊ณณ์ ๋ค 0, zero ์์น๋ ๋ชจ๋ ์์์ ๊ณฑ์ด ๋จ
elif len(zero)==1:
return [0]*zero[0] + [result] + [0]*(len(nums)-zero[0]-1)
ans = []
# nums ์ 0์ด ํ๋๋ ์๋ ๊ฒฝ์ฐ, ๋ชจ๋ ์์์ ๊ณฑ์ ํด๋น ์์๋ก ๋๋๋ฉด ๋จ
for i in range(len(nums)):
ans.append(result//nums[i])
return ans
์ด๋ฒ ๋ฌธ์ ๋ ์ฝ๋์ ์ฃผ์์ผ๋ก ์ค๋ช ํด๋์๋ค.
nums์ 0์ด ํ๋๋ ์กด์ฌํ์ง ์์ผ๋ฉด, ๋ชจ๋ ์์์ ๊ณฑ์์ ํด๋น ์์๋ฅผ ๋๋ ๊ฐ์ด output์ด ๋๋ค.
nums์ 0์ด 1๊ฐ ์กด์ฌํ๋ฉด, 0์ด ์๋ ์์น๋ฅผ ์ ์ธํ ๊ณณ์ ๋ค 0์ด ๋๋ค.
nums์ 0์ด 2๊ฐ ์ด์ ์กด์ฌํ๋ฉด, ๋ชจ๋ ๊ฐ์ด 0์ด ๋๋ค.