Leetcode Java Binary Subarrays With Sum

업데이트:

문제

Link

코드

class Solution {

  public int numSubarraysWithSum(int[] nums, int goal) {
    int sum = 0;
    int result = 0;
    int[] count = new int[nums.length + 1];
    count[0] = 1;
    for (int num : nums) {
      sum += num;
      if (sum >= goal) {
        result += count[sum - goal];
      }
      count[sum]++;
    }
    return result;
  }

}

결과

Link

설명

  1. 0과 1로 이루어진 nums의 연속된 값들의 합이 goal이 되는 부분 배열의 수를 구하는 문제다.

  2. 문제 풀이에 필요한 변수를 정의한다.
    • sum은 합을 계산하기 위한 임시 변수로, 0으로 초기화한다.
    • result는 하위 부분 배열의 수를 구하기 위한 변수로, 0으로 초기화한다.
    • count는 연속된 값의 합계인 위치의 갯수를 계산할 변수로, nums의 길이보다 1 큰 크기로 초기화하여 첫 값에 1로 초기화한다.
  3. nums의 모든 값을 num에 넣어 순차적으로 반복한다.
    • sum에 num을 더해준다.
    • sum이 goal보다 큰 경우, result에 count의 $sum - goal$ 위치의 값을 더해준다.
    • count의 sum번째 값을 증가시킨다.
  4. nums의 연속된 값들의 합이 goal이 되는 부분 배열의 수를 계산한 result를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기