[리트코드/JAVA] 1822. Sign of the Product of an Array
leetcode.com/problems/sign-of-the-product-of-an-array/
# 문제설명
There is a function signFunc(x) that returns:
- 1 if x is positive.
- -1 if x is negative.
- 0 if x is equal to 0.
You are given an integer array nums. Let product be the product of all values in the array nums.
Return signFunc(product).
signFunc(x) 함수는 다음을 반환합니다.
- 양수는 1
- 음수는 -1
- 0은 0
정수 배열 nums가 있습니다. nums배열의 값을 모두 곱한 것을 product라 할 때 signFunc(product)를 구하세요.
# 제한사항
- 1 <= nums.length <= 1000
- -100 <= nums[i] <= 100
# 입출력 예
Example 1:
Input: nums = [-1,-2,-3,-4,3,2,1]
Output: 1
Explanation: The product of all values in the array is 144, and signFunc(144) = 1
Example 2:
Input: nums = [1,5,0,2,-3]
Output: 0
Explanation: The product of all values in the array is 0, and signFunc(0) = 0
Example 3:
Input: nums = [-1,1,-1,1,-1]
Output: -1
Explanation: The product of all values in the array is -1, and signFunc(-1) = -1
# 풀이
class Solution {
public int arraySign(int[] nums) {
int output = 0;
int isOdd = 0;
for(int i : nums) {
if(i == 0) return 0;
else if(i < 0) isOdd++;
}
if(isOdd % 2 != 0) output = -1;
else output = 1;
return output;
}
}
#3, 4
최종 값을 반환할 변수(output)와 음수의 개수를 세어 줄 변수(isOdd)를 선언합니다.
#6
for문을 선언해서 nums배열의 값을 확인합니다.
#8
우선 배열의 값이 하나라도 0이면 전체 수를 곱한 값은 0이기 때문에 바로 0을 반환합니다.
#9
그리고 0이 아닌 값 중에서 음수의 개수만 세어줍니다. (isOdd++)
배열 안의 값을 전부 곱했을 때 음수의 개수가 홀수이면 값은 음수이고, 짝수면 양수값이 나오기 때문입니다.
#13, 14
for문이 종료되면 isOdd에 총 음수의 개수가 있습니다.
이를 2로 나눈 나머지 값을 통해서 홀수면 output에 -1을 짝수면 1을 저장하고 리턴합니다.