function solution(m, arr) {
let answer = 0,
lt = 0,
sum = 0;
for (let rt = 0; rt < arr.length; rt++) {
sum += arr[rt];
if (sum === m) answer++;
while (sum >= m) {
sum -= arr[lt++];
if (sum === m) answer++;
}
}
return answer;
}
그냥 일단은 풀고보자는 마인드로 냅다 Brute Force로 돌렸다
function solution(m, arr) {
let answer = 0,
l = 0,
sum = 0;
for (let r = 0; r < arr.length; r++) {
sum += arr[r];
if (sum === m) answer++;
while (sum >= m) {
sum -= arr[l++];
if (sum === m) answer++;
}
}
return answer;
}
굳이
while
문 안밖으로if (sum === m) answer ++ ;
코드를 왜 중첩해 놓았는지 모르겠다
아래와 같이 해도 같지 않을까?
function solution(m, arr) {
let answer = 0,
l = 0,
sum = 0;
for (let r = 0; r < arr.length; r++) {
sum += arr[r];
while (sum >= m) {
if (sum === m) answer++;
sum -= arr[l++];
}
}
return answer;
}
let a = [1, 1, 1, 1, 1, 1];
console.log(solution(3, a));
똑같이 돌아가는 것 같은데 조금 더 생각해 보아야 겠다.
- 일단은 Brute Force로라도 답을 도출해내서 기쁘다
- Solution의 풀이는 시간을 더 가졌더라고 해도 떠올리기는 힘들었을 것 같다.
(빠르게 해설을 보고 아이디어를 배워나가는 것이 좋은 것 같다.)