인프런 커뮤니티 질문&답변

민수 S님의 프로필 이미지
민수 S

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

3. 연속부분수열1(Two Pointers Algorithm)

for 루프 대신 while문만 써서 해보았는데 코드 리뷰좀 부탁드려도 될까요?

작성

·

204

0

안녕하세요, 선생님! 처음에 이 문제를 이전 강의와 비슷하게 while문만 써서 해보았는데 수업코드랑 좀 차이가 있어서요. 예제 답은 맞는데 논리적으로 문제가 없는지 리뷰좀 부탁드려도 될까요? 감사합니다!

function solution(arr, m)

{

let answer = 0;

let sum = lt = rt = 0;

while(lt <= rt  && rt < arr.length)

{

if(sum == m)

{

answer++;

sum -= arr[lt++];

}

else if(sum < m) sum += arr[rt++];

else sum -= arr[lt++];

}

return answer;

}

답변 3

0

김태원님의 프로필 이미지
김태원
지식공유자

잘 하셨습니다. 그정도면 됩니다. 

스스로 본인만의 코드를 짜시면 여러 입력을 만들어서 테스트해보시기 바랍니다. 실전에서는 이 능력이 제일 중요합니다. 

민수 S님의 프로필 이미지
민수 S
질문자

답변감사드립니다! 입력 테스트 중요성 꼭 기억하겠습니다.

0

민수 S님의 프로필 이미지
민수 S
질문자

아, 오류 발견 감사합니다 ㅠㅠ 이 경우 rt < arr.length 를 rt <= arr.length로 바꾸주니 답이 나오긴 하는데 전체 코드를 바꾸어야 하는지 이 정도 땜질로 괜찮은지 아직 헷갈리긴 합니다.

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

위 코드는 배열의 맨 마지막 숫자가 더해져서 m값이 되는 경우를 카운트하지 못합니다.

arr=[1, 1, 1] 

m=2

로 하면 위 코드는 1이 출력됩니다.

민수 S님의 프로필 이미지
민수 S

작성한 질문수

질문하기