ericagong / algorithm_solving

2 stars 0 forks source link

[투포인터] 수들의 합2 #76

Open ericagong opened 1 year ago

ericagong commented 1 year ago

⭐ 성찰

  1. 성찰내용
  2. 성찰내용
  3. 성찰내용

❓ 문제 상황

수들의 합2

👨‍💻 문제 해결

✅ 1차 풀이: 투포인터 범위의 부분합 확인

  1. si는 0부터 n-1까지 확인하고, 고정된 si에서 ei를 최대한 늘릴 수 있는 만큼 늘림
  2. 구간의 합이 x가 되면 si를 변경시키고 구간합에서 si 빼주기
    
    const fs = require('fs')
    const inputs = fs.readFileSync('/dev/stdin').toString().split('\n')

const [N, M] = inputs.shift().split(' ').map(Number) const nums = inputs.shift().split(' ').map(Number)

let ei = 0 let selectedSum = 0 let cnt = 0 for(let si = 0; si < N; si++) { // ei를 최대한 늘릴 수 있는 만큼 늘리기 while(selectedSum < M && ei < N) { selectedSum += nums[ei] ei += 1 } if(selectedSum === M) cnt += 1 selectedSum -= nums[si] }

console.log(cnt)