코린이의 소소한 공부노트

[LeetCode/Easy] 1991. Find the Middle Index in Array 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 1991. Find the Middle Index in Array

무지맘 2023. 1. 9. 00:17

1. Input

1) 정수 배열 nums

 

2. Output

1) middle index 중 가장 작은 것을 반환

- middle index란 그 인덱스를 기준으로 배열을 반으로 나눴을 때, 왼쪽의 합과 오른쪽의 합이 같게 되는 인덱스를 뜻한다.

- middle index0이라면, 왼쪽에는 아무 값도 없으므로 왼쪽의 합은 0이 된다.

2) 만약 middle index가 없다면 1을 반환

 

3. Constraint

1) 1 <= nums.length <= 100

2) -1000 <= nums[i] <= 1000

 

4. Example

Input: nums = [2,3,-1,8,4] -> Output: 3

설명: index 3(nums[3]=8)을 기준으로 나눠보면

- 왼쪽 합: 2 + 3 + (-1) = 4

- 오른쪽 합: 4

- 양쪽의 합이 같고, 3보다 작은 middle index는 없으므로 3을 반환한다.

 

5. Code

1) 첫 코드(2022/08/03)

int index = -1;

for(int i=0 ; i<nums.length ; i++){
    int lsum=0, rsum=0;
    for(int j=0 ; j<i ; j++)
        lsum += nums[j];
    for(int j=nums.length-1 ; j>i ; j--)
        rsum += nums[j];
    if(lsum==rsum){
        index = i;
        break;
    }
}
return index;

2) 다시 풀어본 코드(2023/01/09)

int mi = -1, lsum = 0, rsum = 0;
for(int i=1 ; i<nums.length ; i++){
    rsum += nums[i];
}
if(rsum==0) mi = 0;
else{
    int i = 1;
    while(i<nums.length){
        lsum += nums[i-1];
        rsum -= nums[i];
        if(lsum==rsum){
            mi = i; break;
        }
        i++;
    }
}
return mi;

- 훨씬 좋아졌다.