코딩테스트

[leetcode] 724. Find Pivot Index

nayoon 2024. 6. 9. 16:14

문제

 

최초 풀이(5ms)

class Solution {
    public int pivotIndex(int[] nums) {
        int result = -1;
        int sum = Arrays.stream(nums).sum();

        int presum = 0;
        for(int i = 0; i < nums.length; i++) {
            sum -= nums[i];

            if (presum == sum) {
                result = i;
                break;
            }
            
            presum += nums[i];
        }
        return result;
    }
}

 

 

참고 후 최종 풀이(1ms)

 

스트림을 사용하면 코드가 간결해지고, 가독성이 높아지는 건 맞는데 ms 단위로 시간을 줄이고자 할 때는 적절하지 않은 듯..

 

presum * 2 가 전체 합에서 nums[i]를 뺀 값, presum += nums[i++]로 반복 표현하기 등을 배움..세상 똑똑이들 참 많다 많어..

class Solution {
    public int pivotIndex(int[] nums) {
        int result = -1;
        int sum = 0;
        for(int num: nums) {
            sum += num;
        }

        int presum = 0;
        for(int i = 0; i < nums.length; presum += nums[i++]) {
            if (presum * 2 == sum - nums[i]) {
                result = i;
                break;
            }
        }
        return result;
    }
}