Menu
CoddyTech

Subarray Sum Equals K

정수 배열 nums와 정수 k가 주어집니다. 원소의 합이 정확히 k인 부분 배열의 개수를 세세요. 부분 배열은 하나 이상의 인접한 원소로 이루어진 연속 구간입니다. 값이 같더라도 시작 위치나 끝 위치가 다르면 두 부분 배열은 각각 별도로 셉니다. 값은 음수이거나 0일 수 있습니다.

함수

subarraySum(nums: integer-array, k: integer) → integer
numsinteger-array
음수와 0을 포함할 수 있는 정수 배열
kinteger
부분 배열로 간주되기 위해 도달해야 하는 합
반환값integer
요소의 합이 k가 되는 부분 배열의 개수

제약 조건

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • 이렇게 긴 배열의 부분 배열은 최대 200,010,000개이므로, 답은 32비트 부호 있는 정수에 들어갑니다.

예제

입력
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
출력
4
설명
네 개의 연속 구간의 합은 7입니다: [3, 4], [1, 3, 3], [3, 3, 1] 및 [3, 4, -7, 1, 3, 3]. 마지막 구간에서는 -7이 3과 4를 상쇄하고, 나중에 합이 다시 7이 되므로 합이 k를 초과한 뒤에도 구간이 일치할 수 있습니다.

lock icon제출 시 숨은 테스트 +17개

challenge icon

후속 질문

합계가 k가 되는 가장 긴 부분 배열의 길이를 O(n) 시간 안에 반환하도록 해법을 어떻게 바꾸시겠어요?

코드 초기화
def subarraySum(nums, k):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

nums = [3, 4, -7, 1, 3, 3, 1, -4]
k = 7

기대값

4