303. Range Sum Query - Immutable

양성준·2025년 4월 8일

코딩테스트

목록 보기
16/102

문제

https://leetcode.com/problems/range-sum-query-immutable/description/

  • 문제가 이해가 안됨........................ 이게 도대체 무슨 문제지
  • sumRange() 메서드는 해당 범위의 합을 구하는 메서드고..
  • NumArray() 메서드는.. 이해가 안되는데
    NumArray(int[] nums) Initializes the object with the integer array nums.
    class가 NumArray고 메서드 이름도 NumArray니까 생성자인데,
    그럼 정수 배열 nums를 사용해 NumArray 객체를 초기화하라는 것
    => 해당 생성자/메서드 구현해주기만 하면 끝??

풀이

class NumArray {
    int[] nums;
    int[] prefixSum;
    public NumArray(int[] nums) {
        this.nums = nums;
        // 클래스 초기화 시점에 prefixSum 배열도 구해놓기. 안그러면 sumRange할때마다 새로구함
        prefixSum = new int[nums.length];
        prefixSum[0] = nums[0];
        for(int i = 1; i < nums.length; i++) {
            prefixSum[i] = prefixSum[i-1] + nums[i];
        }
    }
    
    public int sumRange(int left, int right) {
        if(left == 0) {
            return prefixSum[right]; 
        } else {
             return prefixSum[right] - prefixSum[left-1]; // left가 0이 아니라면 right에서 left-1까지의 합을 빼줌
        }
    }
}
  • 클래스 초기화 시점에 prefixSum 배열을 구해놔야, sumRange를 돌 때 새로 안구함
    (sumRange에서 prefixSum을 구한다면, sumRange가 호출될떄마다 새로 구하기 때문)
profile
백엔드 개발자

0개의 댓글