hsskey / algorithm-practice

🧑‍💻 Solving algorithms to level up
0 stars 0 forks source link

특정한 합을 가지는 부분 연속 수열 찾기 #2

Open hsskey opened 1 month ago

hsskey commented 1 month ago

특정한 합을 가지는 부분 연속 수열 찾기

📝 제약조건

💡 예시

문제 해결 과정

Step 1: 문제 이해하기

Step 2: 접근 방법

Step 3: 코드 설계

n = 배열의 길이
m = 목표 부분합
data = 수열

cnt = 0
intervalSum = 0
end = 0

for start = 0 to n - 1:
    while (intervalSum < m) and (end < n):
        intervalSum += data[end]
        end += 1

    if intervalSum

Step 4: 코드 구현

let n = 8 // 데이터의 개수 N
let m = 5 // 찾고자 하는 부분합(target)
let data = [3, 2, 4, 1, 2, 2, 1, 5] // 전체 수열

let cnt = 0
let intervalSum = 0 // 부분합 저장
let end = 0

// start를 고정시킨 상태에서 end를 최대한 오른쪽으로 이동시키는 방식!
for (let start = 0; start < n; start++) {
    // end를 가능한 만큼 이동시키기(합이 m이상이 될 때 멈출수 있도록 처리)
    while(intervalSum < m && end < n) {
        intervalSum += data[end]
        end += 1
    }
    // 부분합이 m일때 카운트 증가
    if(intervalSum == m) cnt += 1
    intervalSum -= data[start]
}

console.log(cnt)
hsskey commented 1 month ago

수들의 합 2와 동일 ex) i부터 j까지의 합 -> 구간합 (특정한 합을 가지는 부분연속수열의 갯수)